Я ищу инструмент, который может обнаружить вредоносные запросы (например, очевидные SQL-инъекции или посты) и немедленно запретить IP-адрес запрашивающего/добавить в черный список. Я понимаю, что в идеальном мире наш код должен уметь обрабатывать такие запросы и относиться к ним соответствующим образом, но есть большая ценность в таком инструменте, даже если сайт защищен от таких атак, так как это может привести к экономии пропускной способности, предотвращению раздувания аналитики и т.д.
В идеале, я ищу кроссплатформенное (LAMP/.NET
) решение, которое находится на более высоком уровне технологического стека; возможно, на уровне веб-сервера или аппаратного обеспечения. Однако я не уверен, что такое существует.
В любом случае, я хотел бы услышать отзывы сообщества, чтобы понять, какие у меня могут быть варианты реализации и подхода.
Ваше почти рассмотрение его неправильный путь, инструмент № 3party, который не знает о Ваших прикладных методах/обозначении/данных/области, будет попыткой быть в состоянии отлично защитить Вас.
Что-то как предотвращение инъекции SQL - что-то, что должно быть в кодексе, и лучше всего написано людьми, которые написали SQL, потому что они - те, которые будут знать, какой should/shouldnt быть в тех областях (если у Вашего проекта нет очень хороших докторов),
Ваше право, это все было сделано прежде. Вы не должны вполне перестраивать колесо, но Вы действительно должны вырезать новый из-за различия в everyone' s диаметры оси.
Это не общедоступная проблема и проблема пробега, Вы действительно должны быть знакомы с тем, что точно - инъекция SQL, прежде чем Вы сможете предотвратить его. Это - подлая проблема, таким образом, это берет одинаково подлые меры защиты.
Эти 2 связи преподавали мне намного больше тогда основы на предмете, чтобы начать и помогли мне лучшая фраза мои будущие поиски на конкретных вопросах это weren' t ответил.
И в то время как этот не вполне 100%-й искатель, это будет " покажите Вам light" на существующей проблеме в Вашем существующем кодексе, но как с webstandards, не прекращают кодировать, как только Вы проходите этот тест.
Проблема с универсальным инструментом заключается в том, что очень сложно разработать набор правил, которые будут соответствовать только настоящей атаке.
Ключевые слова SQL - это все английские слова, и не забывайте, что строка
DROP TABLE users;
вполне допустима в поле формы, которое, например, содержит ответ на вопрос по программированию.
Единственный разумный вариант - санировать вводимые данные перед передачей в базу данных, но все же передавать их. В противном случае множество совершенно нормальных, не злоумышленных пользователей будут забанены на вашем сайте.
Следует помнить об одном маленьком нюансе: В некоторых странах (например, в большинстве стран Европы) люди не имеют статических IP-адресов, поэтому черный список не должен быть вечным.
Один из методов, который может сработать в некоторых случаях, заключается в том, чтобы взять sql-строку, которая будет запущена, если вы наивно используете данные формы, и передать ее в код, который подсчитывает количество операторов, которые будут фактически выполнены. Если это число превышает ожидаемое, то существует большая вероятность того, что была предпринята попытка инъекции, особенно для полей, которые вряд ли могут включать управляющие символы, такие как имя пользователя.
Что-то вроде обычного текстового поля будет немного сложнее, поскольку этот метод с гораздо большей вероятностью будет давать ложные срабатывания, но это, по крайней мере, начало.
Oracle имеет обучающая программа онлайн об Инъекции SQL. Даже при том, что Вы хотите готовое решение, это могло бы дать Вам некоторые намеки на то, как использовать его лучше, чтобы защитить себя.
Теперь, когда я думаю об этом, Bayesian фильтруют подобный тем, раньше блокировал спам, мог бы работать прилично также. Если бы Вы собрались ряд нормального текста для каждой области и ряда sql инъекции, Вы могли бы быть в состоянии обучить его к нападениям инъекции флага.
Один из моих сайтов был недавно взломан посредством Инъекции SQL. Это добавило ссылку вирусу для каждого текстового поля в db! Фиксация должна была добавить некоторый кодекс, ища ключевые слова SQL. К счастью, I' ve развивался в ColdFiusion, таким образом, кодекс сидит в моем файле Application.cfm, которым управляют в начале каждой интернет-страницы & это смотрит на все переменные URL. У Википедии есть некоторые хорошие связи, чтобы помочь также.