Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Как удвоить время обработки формы?

#php #форма


Есть простая форма ввода пароля.
Как удваивать время обработки формы для одного ip.
Поможет ли это защититься от спамеров и ботов ?    


Ответы

Ответ 1



В сессии храните счётчик неудачных попыток, и ставьте sleep( pow(2,$count)) — с каждой попыткой пауза будет всё больше: 2, 4, 8, 16с ... После 10 неудачных блокируйте сессию, после 3 десятков разных заблокированных сессий с одного ip — блокируйте ip (значит, злодей догадался сбрасывать куки). При общем резком росте числа неудачных попыток по сайту, либо пересмотрите код, либо паникуйте : ) Upd. Одно лишь это удваивание времени каждый раз не сильно поможет от ботов. В Joomla, например, делается так. Выдавая форму для ввода пароля, сайт создаёт сессию, и генерит неий уникальный параметр, который сохраняется в сессии. Он же пишется в виде скрытого в форме для пароля. Пришли данные на логин — смотрим, соответствует ли тот скрытый параметр тому значению, что сохранено в сессии. Если нет — такой запрос можно не обрабатывать дальше. Либо это бот, либо отключены куки.

Ответ 2



Можно без удваивания, поставить sleep на несколько секунд Второй вариант - замерить время обработки (тем же time() в начале и конце обработки), а после поставить sleep/usleep/time_nanosleep с количество времени, потраченном на обработку формы.

Ответ 3



Как вариант, хранить время генерации формы, и сравнивать с временем когда данные от формы пришли. Если например прошло меньше 3 секунд, значит это отправил спамер, или бот ) Время можно например: записывать в базу (предпочтительне) хранить в сессии, куках записывать в скрытое поле формы (тут лучше еще защититься, и добавить хитрый хэш от времени, если хэш от пришедшего времени не совпадает с хэшем то дату поменяли)

Ответ 4



проверяем ip и session если нету такого пишем в базу ip и session Выполняем скрипт делаем response с флагом done = true на фронтэнде если пришел done as true на кнопку submit ставим disabled

Комментариев нет:

Отправить комментарий