Неверные попытки входа в Perl

Я работаю над формой входа в Perl. Я хочу ограничить 3 раза для неверных попыток входа в систему в течение 30 минут. Каким образом я буду использовать. Подскажите, где хранить неверные попытки входа.


person user1852579    schedule 30.11.2012    source источник
comment
Вы можете хранить время попыток входа для каждого пользователя в отдельную таблицу и запрашивать таблицу, прежде чем разрешить пользователю войти в систему. Если запрос показывает, что за последние 30 минут было три или более попыток, вы можете показать пользователю сообщение о том, что они заблокированы на некоторое время.   -  person rlandster    schedule 29.12.2012


Ответы (1)


У вас есть несколько вариантов:

Файлы cookie — наименее безопасные, так как разные браузеры, очистка файлов cookie и т. д. могут повлиять на это. Не рекомендую, но перечислил для полноты.

База данных. Если вы используете базу данных, вы можете создать таблицу, в которой будут записываться все неудачные попытки входа в систему. В этой таблице login_attempts вы записываете следующие значения: date, username. Затем при любой попытке входа в систему вы (псевдо SQL) SELECT COUNT(*) FROM login_attempts WHERE username = '$the_user_name' AND date BETWEEN '$now' AND '$now-30m'. Если возвращаемое значение >= 3, отклонить вход. Убедитесь, что вы создали кластеризованный индекс по имени пользователя и дате по убыванию. Если вы беспокоитесь о пространстве, вы можете иметь задание, которое выполняется каждую ночь и удаляет все записи с датами старше, скажем, 8 часов. (Хотя оставленный в такт, это служит журналом аудита.)

Файловая система — эта опция настолько византийская, что я не буду подробно описывать ее, предполагая, что у вас уже есть какое-то резервное хранилище базы данных. Если вам нужно пойти по этому пути, то это похоже на решение для базы данных, приведенное выше, без оператора SELECT и, вероятно, включает имена пользователей в качестве каталогов с файлом, содержащим каждую попытку входа в систему, и где (mtime + 30m ‹ now) должно быть true, чтобы разрешить успешный вход в систему. Конечно, вам нужно убедиться, что у вас включено mtime для диска, или записать время в файле.

person cfeduke    schedule 30.11.2012
comment
Спасибо за ваш ответ. Я предпочитаю базу данных для недопустимой попытки входа в систему. - person user1852579; 30.11.2012