Лучший способ заблокировать повторные запросы на вход без базы данных? - PullRequest
1 голос
/ 16 июня 2009

Я пытаюсь написать улучшенную функцию сброса пароля для одного из наших общедоступных веб-сайтов, и в дополнение к лучшей капче я хотел пометить имя пользователя, которое пытается войти в систему безуспешно x количество раз за менее чем y минут , Первой мыслью было создание базы данных, в которой регистрируется каждая попытка, а затем после максимального количества попыток за время - мы просто блокируем учетную запись до получения телефонного звонка от менеджера сотрудника для ее сброса.

Что является лучшим подходом, который не требует постоянства через SQL. (Cookie / что-то еще?) Если кто-то не существует, как я могу сделать это с более чистым подходом? почему-то мой мозг сегодня полон

Ответы [ 5 ]

3 голосов
/ 16 июня 2009

Проверьте этот ответ о Дросселировании их.
Регулирование количества попыток входа в систему

У Джеффа Этвуда есть интересная запись в блоге на эту тему, если вам интересно.
http://www.codinghorror.com/blog/archives/001206.html

Хранение их в базе данных может быть утомительным, и вы в конечном итоге будете беспокоиться о затоплении таблицы неудачными попытками входа в систему. Кроме того, хранить что-то на компьютере пользователя, который управляет этим, также сложно, поскольку они контролируют все файлы на своем компьютере, и они могут легко сбросить счетчик неудачных входов в систему или, что еще хуже, отправить вам ошибочные / вредоносные данные обратно.

1 голос
/ 16 июня 2009

Помните, что целью взломщика может быть не получение доступа к вашей системе, а сделать ее непригодной для всех. Возможно, он мог бы добиться этого, добровольно войдя в систему с ложными учетными данными, чтобы заблокировать определенных пользователей на вашем сайте! Я думаю, что вы не найдете адекватного решения без базы данных.

1 голос
/ 16 июня 2009

Вы можете использовать базу данных, использовать memcache и настроить задание cron для периодического вывода таблицы. Вы также можете использовать куки или переменные сессии, но я бы не стал полагаться на них по соображениям безопасности.

1 голос
/ 16 июня 2009

Что ж, cookie не полезен против злоумышленника (он просто удалит cookie или просто не отправит его вам). Если у вас есть состояние приложения в памяти, вы можете использовать его, но вы должны быть очень осторожны, так как это может привести к тому, что вы действительно быстро заполняете свою память, помимо проблем с масштабируемостью из-за параллелизма и замок. И даже это может не работать в приложении, работающем на многих разных серверах, так как это состояние приложения, вероятно, не распределяется между этими серверами. Как вы думаете, почему хранение данных в базе данных является плохой идеей?

1 голос
/ 16 июня 2009

Использование файлов cookie или сеансов было бы плохо, поскольку пользователь мог очистить свои попытки входа в систему, просто очистив файлы cookie. Может быть, было бы целесообразно использовать файл во временном каталоге для хранения попыток входа в систему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...