Вопрос профи по php

12
S9
На сайте с 17.04.2009
Offline
22
1089

Делаю авторизацию для своего скрипта, как лучше сделать запрос каптчи?

Хочу сделать так: 2 раза неверно введен пароль, на 3-й раз появляется каптча. Счетчик попыток в сессию записать, или в базу данных? или без разницы?

Какой метод будет устойчивым от ботов?

профессионал по Joomla, обращайтесь...
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

а что часто брутят?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S9
На сайте с 17.04.2009
Offline
22
#2

ну только еще разрабатываю, хотел изначально защитится от таких примитивных хотя бы брутов.

SC
На сайте с 16.02.2007
Offline
77
#3

записывать надо ip. А лучше не изобретат велосипеды, а пользоваться фреймворками

ICQ: 735-415
S
На сайте с 23.05.2004
Offline
315
#4

А фреймворк - это не изобретенный велосипед ? :)

Это просто подпись.
[Удален]
#5
site_creators:
записывать надо ip. А лучше не изобретат велосипеды, а пользоваться фреймворками

Какой IP? Куда? А если у вас на сайте открыто 100 соединений с одним и тем же IP?

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

ТС, по теме, если ваш юзер переключится с бразера на браузер, сессия разорвется любая. Я бы использовал сохранение в БД IP + HTTP_X_FORWARDED_FOR.

S9
На сайте с 17.04.2009
Offline
22
#6
So1:
Я бы использовал сохранение в БД IP + HTTP_X_FORWARDED_FOR.

А можно поподробнее? где можно увидеть похожий пример реализации?

Просто если записывать только IP, ведь может быть нормальный пользователь с данного IP и бот который брутит вас.

leprekon
На сайте с 13.05.2010
Offline
27
#7

Не плохой вариант. Делайте так:

Пишите количество запросов к юзеру в БД (как вы понимаете, сессии подменить можно);

После x неверных попыток ввода - выводите капчу и дайте пользователю ещё y попыток (то есть, например, 2 попытки без капчи и 8 с капчей). Потом бан на z минут/часов/дней.

Ну и, конечно, отдельно пишите IP в лог. Если с 1 ip неправильно указан пароль к 2 (например) аккаунтам - в бан на z минут/часов/дней.

S9
На сайте с 17.04.2009
Offline
22
#8

leprekon, а как быть с 2-мя пользователями с 1 IP? получается 1-го будут всё время блокировать зря?

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#9
Stiv99:
а как быть с 2-мя пользователями с 1 IP? получается 1-го будут всё время блокировать зря?

Мало вероятно, что оба пользователя с одного ip будут одновременно логиниться. Поэтому, если юзер успешно залогинился, ему выдается сессия, бан по ip должен учитывать сессию, или по другому - бан должен быть только на странице авторизации.

S9
На сайте с 17.04.2009
Offline
22
#10
Ёхан Палыч:
Мало вероятно, что оба пользователя с одного ip будут одновременно логиниться. Поэтому, если юзер успешно залогинился, ему выдается сессия, бан по ip должен учитывать сессию, или по другому - бан должен быть только на странице авторизации.

Ну мало вероятно, это самый легкий вариант....

Может кто-то предложит что-то более разумное?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий