2008-08-04 1 views
17

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

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

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

+0

Пожалуйста, выберите лучший ответ, спасибо. – mruanova 2017-08-22 22:27:47

ответ

5

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

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

DROP TABLE users; 

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

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

3

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

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

3

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

0

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

10

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

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

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

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

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

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

3

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

0

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

0

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