Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
1

Блокировка при входе на сайт!

18.08.2006, 20:52. Просмотров 1633. Ответов 5
Метки нет (Все метки)

Такая схема:

Есть сайт, при входе на который вводятся логин и пароль. Если человек верно ввел данные, то продолжает работу, если не верно, то вводит еще раз, но попытки только 3, на третий раз логин должен заблокироваться на 3 часа.

Как лучше организовать блокировку и проверку не заблокирован ли логин, чтобы если логин заблокирован сразу освобождался бы ресурс.

Типа защита от подбора пароля, пароль после этого у меня меняется.



Я сначала хотел через application делать, но они занимают ресурсы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2006, 20:52
Ответы с готовыми решениями:

Ошибка при входе на сайт
Здравствуйте. Подскажите пожалуйста что сделать чтоб ушли ошибки при входе на сайт...

Ошибка при входе на сайт
Собственно вот ошибка <?php $form = " <form method='post' class='signin' action=''> ...

Ошибка при входе на сайт
Помогите, выдает ошибку Parse error: syntax error, unexpected '<?php $db = new...

Ошибка при входе на сайт
Здравствуйте все! Когда отрываешь сайт выскакивает ошибки те что на скрин шоте, кто знает как...

5
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
18.08.2006, 20:57 2
???
Данные в БД хранятся? В чем может быть проблема?
0
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
18.08.2006, 21:03  [ТС] 3
Данные беруться из БД.



Как мне, не занимая ресурсов, отбрасывать тех, кто ввел заблокированный логин, и как логин заблокировать на 3 часа.
0
76 / 52 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
18.08.2006, 23:55 4
Добавляем в таблицу логинов поля с датой до которой заблокирован данный логин и кол-вом неуспешных попыток входа.
T-SQL
1
2
dtBlockedUntil datetime NULL
nFailedLogins int NOT NULL DEFAULT(0)
Затем пишем хранимую процедуру, которая реализует логику проверки правильности логина/пароля и работу с блокировкой.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
CREATE PROC dbo.userLogon
@sLogin varchar(30),
@sPassword varchar(30),
@bSuccess bit = NULL OUTPUT,
@bLoginBlocked bit = NULL OUTPUT
AS
SET @bSuccess = 0
SET @bLoginBlocked = 0
IF NOT EXISTS (SELECT * FROM users WHERE sLogin = @sLogin) RETURN
-- Проверяем не заблокирован ли данный логин
IF EXISTS (SELECT * FROM users
WHERE sLogin = @sLogin
AND dtBlockedUntil IS NOT NULL
AND dtBlockedUntil > getdate()
)
BEGIN
SET @bLoginBlocked = 1
RETURN
END
SET NOCOUNT ON
IF EXISTS (SELECT * FROM users
WHERE sLogin = @sLogin
AND sPassword = @sPassword
)
BEGIN
-- Успешная авторизация
SET @bSuccess = 1
UPDATE users
SET dtBlockedUntil = NULL,
nFailedLogins = 0
WHERE sLogin = @sLogin
END
ELSE
BEGIN
-- Ошибка авторизации
DECLARE @nFailedLogins int
SET @nFailedLogins = (SELECT nFailedLogins =
CASE
WHEN dtBlockedUntil IS NOT NULL THEN 0
ELSE nFailedLogins
END
FROM users WHERE sLogin = @sLogin
)
SET @nFailedLogins = @nFailedLogins + 1
IF @nFailedLogins>2
BEGIN
-- Блокируем логин
UPDATE users
SET dtBlockedUntil = DATEADD(hh, 3, getdate()), -- 3 часа
nFailedLogins = @nFailedLogins
WHERE sLogin = @sLogin
END
ELSE
BEGIN
-- Обновляем счетчик неудачных попыток авторизации
UPDATE users
SET dtBlockedUntil = NULL,
nFailedLogins = @nFailedLogins
WHERE sLogin = @sLogin
END
END
SET NOCOUNT OFF
Процедуре передается имя пользователя и пароль, а она возвращает следующую информацию:
- Если логин успешный, то параметр @bSuccess будет иметь значение 1, параметр @bLoginBlocked = 0
- Если логин ошибочный, то @bSuccess = 0. Параметр @bLoginBlocked в данном случае говорит, что логин был ранее заблокирован.
То есть на третьей неправильной попытке входа @bSuccess = 0, @bLoginBlocked = 0 и только на четвертой попытке входа @bLoginBlocked = 1
Это можно использоавть как уведомление о том, что авторизация прошла неуспншно именно из-за того, что логин заблокирован.
Вызов этой процедуры из ASP будет твоим домашним заданием
0
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
21.08.2006, 14:00  [ТС] 5
Спасибо. Процедурка интересная

но у меня не получается ее создать. В блоке "Блокируем логин" выдается ошибка на строку nFailedLogins = @nFailedLogins (Incorrect syntax near 'nFailedLogins'), я уже и копировал это слово с других переменных и вводил вручную, ничего не помогает.
0
76 / 52 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
21.08.2006, 14:29 6
На предыдущей строке запятой не было, отсюда и ошибка. Я внес исправление в текст процедуры, скопируй ее по новой.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2006, 14:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверка возраста при входе на сайт WP
Доброго времени суток! Подскажите решение для сайта на WordPress: Нужно чтобы при входе на...

Всплывающее окно при входе на сайт
Приветствую! Помогите чайнику! :) Имеется всплывающее окно которое автоматически появляется при...

Проверка сессии при входе на сайт
Здравствуйте. PHP я начал изучать сравнительно недавно и изучаю я его так сказать "по живому"....

Выбор языка при входе на сайт
Кто поможет сделать подобное как здесь тока с другой картинкой на 3х языках Русский English...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.