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

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

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

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

4.08.2008 14:40:58
8 ОТВЕТОВ

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

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

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

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

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

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

11
27.01.2013 12:22:35

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

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

 DROP TABLE users;

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

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

5
18.10.2017 22:01:40

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

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

3
4.08.2008 15:20:17

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

3
4.08.2008 15:22:04

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

3
5.08.2008 17:38:53

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

0
4.08.2008 15:26:05

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

0
16.09.2008 14:04:17

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

0
24.07.2014 05:18:24