Перехват SQL-инъекций и других вредоносных веб-запросов

Я ищу инструмент, который может обнаруживать вредоносные запросы (такие как очевидные SQL-инъекции или сообщения) и немедленно блокирует IP-адрес инициатора запроса / добавляет его в черный список. Я знаю, что в идеальном мире наш код должен уметь обрабатывать такие запросы и обрабатывать их соответствующим образом, но в таком инструменте есть большая ценность, даже когда сайт защищен от таких атак, так как это может привести к экономия трафика, предотвращение раздувания аналитики и т. д.

В идеале я ищу кроссплатформенное (LAMP/.NET) решение, которое находится на более высоком уровне, чем стек технологий; возможно, на уровне веб-сервера или оборудования. Однако я не уверен, существует ли это.

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


person Community    schedule 04.08.2008    source источник


Ответы (8)


Вы почти неправильно смотрите на это, никакой 3-сторонний инструмент, который не знает о методах / именах / данных / домене вашего приложения, не сможет полностью вас защитить.

Что-то вроде предотвращения SQL-инъекций - это то, что должно быть в коде, и лучше всего написано людьми, написавшими SQL, потому что именно они будут знать, что должно / не должно быть в этих полях (если в вашем проекте нет очень хороших документов )

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

Это не проблема с запуском и запуском, вам действительно нужно знать, что такое SQL-инъекция, прежде чем вы сможете предотвратить ее. Это скрытая проблема, поэтому она требует столь же скрытой защиты.

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

И хотя этот не совсем стопроцентный поисковик, он «покажет вам свет» на существующую проблему в вашем существующем коде, но, как и в случае с веб-стандартами, не прекращайте кодирование после прохождения этого теста.

person Uberfuzzy    schedule 04.08.2008

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

Ключевые слова SQL - это все английские слова, и не забывайте, что строка

 DROP TABLE users;

идеально подходит для поля формы, которое, например, содержит ответ на вопрос программирования.

Единственный разумный вариант - дезинфицировать ввод, прежде чем передавать его в базу данных, но тем не менее передать его. В противном случае многие совершенно нормальные, не злонамеренные пользователи будут забанены на вашем сайте.

person Mat    schedule 04.08.2008

Один из методов, который может работать в некоторых случаях, - это взять строку sql, которая будет запущена, если вы наивно использовали данные формы, и передать ее в некоторый код, который подсчитывает количество операторов, которые действительно будут выполнены. Если оно больше ожидаемого числа, то велика вероятность того, что была предпринята попытка внедрения, особенно для полей, которые вряд ли будут содержать управляющие символы, такие как имя пользователя.

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

person ricree    schedule 04.08.2008

Следует иметь в виду одну мелочь: в некоторых странах (например, в большинстве стран Европы) у людей нет статических IP-адресов, поэтому занесение в черный список не должно длиться вечно.

person Michael Stum    schedule 04.08.2008

У Oracle есть интерактивное руководство по внедрению SQL. Даже если вам нужно готовое решение, это может дать вам несколько советов о том, как лучше использовать его для защиты.

person Mario Marinato    schedule 05.08.2008

Теперь, когда я думаю об этом, байесовский фильтр, подобный тем, которые используются для блокировки спама, тоже может работать прилично. Если вы собрали набор обычного текста для каждого поля и набор SQL-инъекций, вы могли бы научить его отмечать атаки инъекций.

person ricree    schedule 04.08.2008

Один из моих сайтов недавно был взломан с помощью SQL Injection. Он добавил ссылку на вирус для каждого текстового поля в базе данных! Исправление заключалось в добавлении кода для поиска ключевых слов SQL. К счастью, я разработал в ColdFiusion, поэтому код находится в моем файле Application.cfm, который запускается в начале каждой веб-страницы и просматривает все переменные URL. В Википедии есть несколько хороших ссылок, которые могут вам помочь.

person user7428    schedule 16.09.2008

Интересно, как это реализуется годами позже Google, и они удаляют URL-адрес вместе, чтобы предотвратить атаки XSS и другие вредоносные действия.

person ECE    schedule 24.07.2014