2008-12-08 4 views
2

Кто-нибудь знает хорошую библиотеку, где я могу запускать строки перед их вставкой, которые могут лишить код sql/javascript? Для запуска в jsp-страницах.Lib для защиты инъекции SQL/javascript для java/jsp

Idealy Либерал будет:

  • Free
  • Легкий
  • Простота в использовании

Спасибо заранее к SO сообщества, которые будут счастливы ответить :)

ответ

5

Apache Commons lang StringEscapeUtils доставит вам часть пути. Он ускользает, не раздевается.

http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html

Edit: Экранирование может спасти вас от атак инъекций, поскольку он гарантирует, что данные, пользователь Введенный не выполняются как код, но всегда представлен как данные пользователя.

4

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


Редактировать: после повторного чтения вашего вопроса, кажется, я неправильно понял, что вы просили. Я согласен с моими первоначальными комментариями как точными для части запроса sql вашего вопроса. Для этого вам определенно нужны реальные параметры запроса.

Что касается фильтрации javascript, я не думаю, что есть реальный стандарт способ сделать это еще. Я знаю, что Джефф опубликовал код, который они используют здесь, в SO, но у меня нет ссылки. Если я найду его, я отправлю его.

0

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

Ok ти я думаю, мне нужно перезапустить изменение кода :) еще вопрос для апи до сих пор стоит :)

2

Взгляни на AntiSamy на OWASP. Я думаю, это может быть то, что вы ищете. В настоящее время я не работаю на Java, поэтому я не могу рассказать вам о том, как он работает.

0

Тег c: out по умолчанию ускоряет XML. Это может быть удобно для хранения пользовательского ввода, поскольку связанное значение все равно будет входным пользователем, но источник, созданный браузером, будет использовать экранированные записи.

0

Чтобы предотвратить использование SQL-запросов, используйте объекты PreparedStatement. Если вы используете какой-то уровень персистентности, убедитесь, что он использует объекты PreparedStatement. Что касается вредоносного HTML и JavaScript, используйте. По умолчанию это приводит к символам XML. Вы также можете использовать функцию jSTL escapeXml, найденную в fn tld.

0

Просто перефразировать предложения, данные других здесь:

ОП хочет предотвратить SQL и нагнетательных JavaScript атак.

Атаки SQL Injection можно предотвратить, гарантируя, что параметризованные запросы/привязки переменных используются для обеспечения ввода пользователем базы данных. В мире Java использование PMDPMD rule) и Findbugs (правила встроены в Findbugs по умолчанию) поможет вам определить местоположения в вашей базе кода, которые подвержены атакам SQL-инъекций. OWASP имеет хорошую статью на preventing SQL injection in Java.

Что касается инъекции сценария, то самым безопасным способом предотвращения выполнения сценариев, запускаемых с помощью взлома, является обеспечение того, чтобы пользовательский ввод, когда он используется как вывод, должен отображаться с использованием кодированного формата - для веб-приложений , это будет кодирование HTML. This OWASP page показывает, как выполнять кодирование HTML в Java.