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

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

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

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

Ответы [ 8 ]

10 голосов
/ 04 августа 2008

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

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

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

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

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

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

5 голосов
/ 04 августа 2008

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

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

 DROP TABLE users;

совершенно допустимо в поле формы, которое, например, содержит ответ на программный вопрос.

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

3 голосов
/ 05 августа 2008

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

3 голосов
/ 04 августа 2008

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

3 голосов
/ 04 августа 2008

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

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

0 голосов
/ 24 июля 2014

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 04 августа 2008

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

...