Где установлены неудачные попытки входа в систему/задержки регулирования, если не в PHP?

У меня такой же вопрос, как этот, на который был дан ответ 9 лет назад, и данные ответы совершенно бесполезны (Как отложить попытки входа в систему после слишком большого количества попыток (PHP))

Как вы можете отложить попытки входа в систему против ботов без использования sleep()? Кажется очевидным, что желание предотвратить DoS-атаки из клиентского кода сбивает с толку... Я не понимаю, где я могу установить «задержки» или «http-запрос на вход», чтобы он исходил от фактического сервера/apache или что-то.

Пожалуйста, будьте снисходительны, я оставил его на несколько дней из-за выгорания и вернулся к нему сейчас, все еще не найдя в нем понимания.
Я понимаю и реализую часть регулирования - я знаю, как настроить БД и таблицы для захвата каждой неудачной попытки, но не знаю, как настроить apache/сервер/все, что нужно настроить, чтобы «приостановить» сценарий (сценарий, который обрабатывает форму входа) для текущего пользователя/IP-адреса для входа в систему в течение следующих x секунд?

Это делается с помощью PHP? Или вы настроили свою конфигурацию apache или правило htaccess, чтобы сделать это? Мне очень нужна помощь в этом...

Использование sleep() — плохая идея. sleep() сохраняет активность «процесса», поэтому он потребляет ЦП и ОЗУ. PHP — неподходящее место для решения этой проблемы. специальное оборудование для защиты от DoSS..

Raymond Nijland 30.01.2019 12:50

@RaymondNijland да, вот почему ответы на этот вопрос бесполезны, я прочитал десятки ответов на SO, говорящих о том, чтобы не использовать sleep(). Это действительно аппаратная проблема? Я не думал, что это нормальный способ сделать это. Если я не могу позволить себе оборудование, сделает ли мой сайт уязвимым для DoS-атак? (мой сервер веб-хостинга говорит, что защита от DoS-атак входит в пакет по умолчанию, но другие упоминали, что защита от DoS-атак вашего хоста находится только на уровне домена, поэтому она не слишком эффективна). Что я должен делать?

ArabianMaiden 30.01.2019 12:59

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

Raymond Nijland 30.01.2019 14:49

Другой идеей может быть внедрение клиентского SSL-сертификата для входа в систему. У браузера нет действительного клиентского SSL-сертификата, и соединение для входа

Raymond Nijland 30.01.2019 14:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
152
1

Ответы 1

Вы не должны "sleep()" в самом скрипте, так как одна и та же система все еще может спамить несколько запросов, и все ваши потоки будут задерживаться в спящем режиме, а затем отвечать.

Одно из предложений состоит в том, чтобы сохранить IP-адрес и/или токен сеанса посещения, а затем, если этот IP-адрес/токен сеанса снова посещает слишком рано, вы просто отклоняете/отказываете запрос в PHP.

Таким образом, при каждом запросе проверяйте таблицу базы данных с попытками входа в систему, а затем, если этот идентификатор уже посещался в последнюю секунду (или как бы долго вы ни хотели, чтобы тайм-аут), просто отправьте ответ 429 Too Many Requests (или ваш соответствующий код неисправности). Если запрос свежий, сохраните его в базе данных и продолжите обработку.

Спасибо за предложение фактического решения, но похоже, что это все еще зависит от сценария и базы данных, которые, как я думал, боты могут обойти?

ArabianMaiden 30.01.2019 12:56

Если вы просто пытаетесь остановить людей, взламывающих ваш логин, все, что вам нужно, это изменения сценария в моем ответе. Также убедитесь, что ваш сайт защищен от атак SQLi и любых форм обхода аутентификации (хорошей идеей будет использование надежной библиотеки аутентификации, а не создание собственной). Если вы хотите остановить другие DoS-атаки, вам, вероятно, понадобится защита от DoS через вашего хостинг-провайдера или кого-то вроде Cloudflare.

judges119 31.01.2019 13:39

Другие вопросы по теме