Есть форма входа на сайт: логин с паролем.
Если юзер ввел неправильно логин или пароль три раза подряд то запускается таймер с обратным отсчетом 5 мин. в течении которых юзеру блокируется доступ к аккаунту.
Это все я реализовал на сессиях php.
Проблема в том что если юзер в течении этих 5 минут очистит куки то он снова получает возможность ввода логина и пароля не дожидаясь окончания 5 минут.
Вопрос, наверное, вы уже догадались в чем: как реализовать эти 5 мин. что бы, как минимум, при очистке куки не сбивался таймер.
Не стал бы просить помощи у "аудитории" но уже три дня бьюсь с этим и ни чего путного найти и придумать не могу. Для меня принципиальной разницы нету на чем это будет реализованно на php или js.
Пробовал через "HTML 5 DOM Storage", но при очистке куки данные слетают. Пробовал через "evercookie", но при очистке куки данные слетают. Не знаю, может я что то неправильно делаю, может в браузерах такая фича давно перестала прокатывать.
Может можно как то, какой то уникальный номер компа, серийник чего то, хеш какой нибудь или какого нибудь железа узнать при помощи скриптов php или js. Или "неубиваемые" куки поставить. Но не верю я что ничего здесь нельзя придумать.
Если это злоумышленник?
Кто то пытается подобрать пароль к моему логину через bruteforce. bruteforce неправильно подбирает пароль 3 раза, скрипт блокирует доступ к аккаунту на 5 минут и Я НАСТОЯЩИЙ ПОЛЬЗОВАТЕЛЬ СВОЕГО АККАУНТА в этот момент пытаюсь попасть в свой аккаунт в течении 5 минут, доступ к моему аккаунту заблокирован. Следовательно как то надо идентифицировать, желательно однозначно, этот компьютер с которого производились эти 3 попытки ввести пароль. КАК ИДЕНТИФИЦИРОВАТЬ ИМЕННО ЭТОТ КОМП?, потому как настоящий пользователь в эти 5 минут может тоже пробовать войти в свой акк.
zlojnaxa: Как вариант можно вывести кнопку "заблокировать аккаунт и выслать мне на почту код разблокировки" или делать это автоматически про n-ной попытке
zlojnaxa: ИДЕНТИФИЦИРОВАТЬ ИМЕННО ЭТОТ КОМП можно только если это школьник. А если это скрипт, то он меняет заголовки, ip и т.д. идентифицировать невозможно, только блокируя кучу ip-шников, а следовательно следом и кучу не в чем не повинных пользователей.
Максим Тимофеев: "а следовательно следом и кучу не в чем не повинных пользователей"
В этом и был вопрос. То есть однозначно не идентифицировать. Все таки я склоняюсь к тому что как то можно. Спасибо за ответы.
zlojnaxa: Идентификация может быть только по тем данным, которые переданы в get запросе, а их можно подделать. Крайне советую использовать проверенные временем методы, для предотвращения подбора пароля, а именно:
- каптча, крайне хороша гугловская reCaptcha
- блокировка пользователя, до восстановления по email
Все остальное - это борьба с пользователями, а не злоумышленниками, так как сложности создает, а проблему все равно не решает.
что мешает в таблице с юзерами добавить поле с баном авторизоации? т.е. по логину находите юзера и проверяете до какого времени его заблокировали, а так это все данные открыты и клиент может изменить
Если это злоумышленник?
Кто то пытается подобрать пароль к моему логину через bruteforce. bruteforce неправильно подбирает пароль 3 раза, скрипт блокирует доступ к аккаунту на 5 минут и Я НАСТОЯЩИЙ ПОЛЬЗОВАТЕЛЬ СВОЕГО АККАУНТА в этот момент пытаюсь попасть в свой аккаунт в течении 5 минут, доступ к моему аккаунту заблокирован. Следовательно как то надо идентифицировать, желательно однозначно, этот компьютер с которого производились эти 3 попытки ввести пароль. КАК ИДЕНТИФИЦИРОВАТЬ ИМЕННО ЭТОТ КОМП?, потому как настоящий пользователь в эти 5 минут может тоже пробовать войти в свой акк.
zlojnaxa: это редко происходит, обычно увидят что защита стоит и уходят, очень маленькая вероятность что совпадет что и настоящий пользователь хочет авторизоваться в данный момент и кто-то пытается его взломать, как вариант еще можно не 5 минут делать, а 30-60 сек, это за глаза хватит чтоб пропало желание подбирать.
Если это злоумышленник?
Кто то пытается подобрать пароль к моему логину через bruteforce. bruteforce неправильно подбирает пароль 3 раза, скрипт блокирует доступ к аккаунту на 5 минут и Я НАСТОЯЩИЙ ПОЛЬЗОВАТЕЛЬ СВОЕГО АККАУНТА в этот момент пытаюсь попасть в свой аккаунт в течении 5 минут, доступ к моему аккаунту заблокирован. Следовательно как то надо идентифицировать, желательно однозначно, этот компьютер с которого производились эти 3 попытки ввести пароль. КАК ИДЕНТИФИЦИРОВАТЬ ИМЕННО ЭТОТ КОМП?, потому как настоящий пользователь в эти 5 минут может тоже пробовать войти в свой акк.
zlojnaxa: Как раз пусть лучше "настоящий" пользователь узнает, что его сломать пытаются. И потом, как вы собираетесь разделять ситуации "это настоящий пользователь ввел пароль" и "это злоумышленник подобрал пароль сменив в 101-й раз компьютер"?
"сменив в 101-й раз компьютер"- образно понять можно :)
Но физически нужно ломать СЕРЬЕЗНЫЙ сайт что бы прибегнуть к такому роду средств, да и то у них есть какие то меры защиты на такой случай, по меньшей мере я так думаю.
Мой сайт "ни о чем". Но интересует как все таки организовать такую защиту? IP явно не катит. Куки- НЕТ. КАК??
zlojnaxa: почему не катит IP?) я честно не понимаю.. какие с такой защитой проблемы? IP это фактически единственные достоверные данные которые вы может принять от пользователя и он не может его без проблем изменить.. конечно есть прокси, можно сменить IP если он динамический, но это значительно затруднит подбор пароля путем перебора.. Хранить на стороне клиента любые данные в таком случае это точно не то что надо
IP не катит потому что он динамический. Его может сменить, как вы сказали, сам злоумышленник. Так же с какой то переодичностью он меняется скриптами провайдера. По сему не катит. Ну должен же быть какой то метод однозначного определения.
if IP пусто
то проверяем куки браузера
if куки браузера пусто
то проверяем ... и так далее
НО!!! Хеш какого нибудь железа на компе? Серийник чего то там- так просто не сменить. Вот Об этом я говорю. Что можно однозначного о юзере узнать?
zlojnaxa: Вам же сказали, что ип это единственный источник, который нельзя подделать. Баньте на дни/недели. Возьмите листы проксей, если совпадает из этого списка что-то - бан.
Денис Ручьев:
Вчера об этом думал, несколько раз натыкался на эту же самую статью, но почитав мне показалось что это неактуально как и способ с "evercookie". Когда то "evercookie" был актуален а сейчас чистится с помощью стандартного инструмента браузера, там где чистятся куки (по крайней мере в хроме- у себя вчера тестил).
РЕБЯТ!!!!!
Если это злоумышленник?
Кто то пытается подобрать пароль к моему логину через bruteforce. bruteforce неправильно подбирает пароль 3 раза, скрипт блокирует доступ к аккаунту на 5 минут и Я НАСТОЯЩИЙ ПОЛЬЗОВАТЕЛЬ СВОЕГО АККАУНТА в этот момент пытаюсь попасть в свой аккаунт в течении 5 минут, доступ к моему аккаунту заблокирован. Следовательно как то надо идентифицировать, желательно однозначно, этот компьютер с которого производились эти 3 попытки ввести пароль. КАК ИДЕНТИФИЦИРОВАТЬ ИМЕННО ЭТОТ КОМП?, потому как настоящий пользователь в эти 5 минут может тоже пробовать войти в свой акк.