Методы предотвращения запросов MySQL на основе DDoS, отправляемых через строку URL

Я работаю с сайтом, который не создал. Похоже, я имею дело с DDoS и / или SQL-инъекцией, которая включает запрос к базе данных через строку URL-адреса. В настоящее время я изучаю метод "добавления слешей" к запросу, который, как мне сказали, поможет атаке, если основан на форме:

http://php.net/manual/en/function.addslashes.php

Если это не сработает, мне было бы любопытно, если бы был способ просто ограничить частоту выполнения запросов за сеанс, за IP или любую другую переменную, которая могла бы по крайней мере замедлить атаку. Заранее спасибо.

2 ответа

Решение

Да, вы можете ограничить использование на пользователя в час в MySQL:
http://dev.mysql.com/doc/refman/5.6/en/user-resources.html

Однако большинство веб-приложений используют одно имя пользователя MySQL для всех пользователей приложения. Так что это может послужить лишь ограничением всего вашего сайта.

Функция addlashes не является правильным решением для предотвращения внедрения SQL. Каждый MySQL API включает в себя более подходящую экранирующую функцию, например mysqli_real_escape_string() или PDO:: quote ().

Но еще лучше использовать подготовленные операторы с параметрами запроса вместо экранирования и объединения переменных в строки запроса SQL.

Примеры легко найти, если вы изучите другие вопросы с тегом sql -jection. Один из лучших ответов - как я могу предотвратить внедрение SQL в PHP?

Я написал популярную презентацию об этом: мифы и ошибки SQL-инъекций.

  1. Как я могу предотвратить внедрение SQL в PHP?
  2. Извините, но сначала вы должны понять, что такое Distributed DOS атака. Потому что ни ограничение по сеансу, ни по IP не помогут. Вы также можете подтвердить, действительно ли это DOS-атака, а не просто плохо написанный код, который замедляет работу сайта при помощи простых спам-ботов.
  3. Вы можете подтвердить, если это действительно уколы вообще. Возможно, уже заданы вопросы об инъекциях, где просто глупые спам-боты заполняют веб-формы с открытым доступом.

Честно говоря, вы должны быть более уверены в своем вопросе. В противном случае прямой прямой ответ не окажет никакой реальной помощи.

Кстати, это неясно из вашего вопроса и вряд ли правдоподобно, но если ваш сайт действительно выполняет целые SQL-запросы, полученные через GET-запрос - никакие действия или программное обеспечение не помогут.

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