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

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

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

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

Ответов (8)

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

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

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

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

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

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

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

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

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

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

 DROP TABLE users;

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

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

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

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

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

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

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