Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

 DROP TABLE users;

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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