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

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

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

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

8 ответов

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

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

     DROP TABLE users;
    

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

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

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

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

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

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

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

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

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

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

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

    И хотя это не совсем 100% finder, он «покажет вам свет» на существующую проблему в существующем коде, но, как и с webstandards, не останавливайте кодирование, как только вы пройдете этот тест.

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

  7. Интересно, как это реализуется годы спустя google и их удаление URL все вместе, чтобы предотвратить атаки XSS и другие вредоносные acitivites