Кто-нибудь знает хорошую библиотеку, в которой я могу запускать строки до их вставки, которая может вырезать код sql / javascript? Для запуска на страницах jsp.
В идеале библиотека будет:
Заранее спасибо сообществу SO, которое с радостью ответит :)




Вам нужно полагаться на механизм API вашей базы данных для использования параметризованных запросов. Если вы первый динамически создаете строку sql, а тогда хочет очистить завершенную строку запроса, вы делаете это неправильно. Это просто напрашивается на неприятности.
Обновлено: перечитав ваш вопрос, кажется, я неправильно понял, о чем вы спрашивали. Я поддерживаю свои первоначальные комментарии как точные для части вашего вопроса о sql-инъекции. Для этого вам обязательно нужны реальные параметры запроса.
Что касается фильтрации javascript, я не думаю, что есть реальный способ стандарт сделать это. Я знаю, что Джефф разместил код, который они используют здесь, в SO, но у меня нет удобной ссылки. Если найду, выложу.
Apache Commons lang StringEscapeUtils поможет вам в этом. Ускользает, не раздевается.
http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html
Обновлено: экранирование может спасти вас от атак путем инъекций, поскольку оно гарантирует, что данные, введенные пользователем, не выполняются как код, а всегда представляются как данные для пользователя.
Вы говорите, что для каждой возможной записи, добавляемой в строку, я должен сначала удалить «вредоносные» данные. Да, это имеет смысл, поскольку я не смог бы сказать, что было добавлено в качестве входных данных, а что будет частью самого запроса.
Хорошо, я думаю, мне нужно перезапустить изменение кода :) все еще вопрос для api все еще стоит :)
Взгляните на AntiSamy на OWASP. Я думаю, это может быть то, что вы ищете. В настоящее время я не работаю на Java, поэтому не могу рассказать вам о том, как она работает.
Тег c: out по умолчанию экранирует XML. Это может быть удобно для хранения пользовательского ввода, поскольку связанное значение будет по-прежнему вводиться пользователем, но источник, созданный браузером, будет использовать экранированные записи.
Чтобы предотвратить внедрение SQL, используйте объекты PreparedStatement. Если вы используете какой-либо уровень сохраняемости, убедитесь, что он использует объекты PreparedStatement. Что касается вредоносного HTML и JavaScript, используйте. По умолчанию это экранирует символы XML. Вы также можете использовать JSTL-функцию escapeXml из файла fn tld.
Просто перефразируя предложения, данные здесь другими:
OP хочет предотвратить атаки с использованием SQL и JavaScript.
Атаки с использованием SQL-инъекций можно предотвратить, обеспечив использование параметризованных запросов / переменных связывания для предоставления пользовательского ввода в базу данных. В мире Java использование PMD (и Правило PMD) и Findbugs (правила встроены в Findbugs по умолчанию) поможет вам определить места в вашей базе кода, которые уязвимы для атак с использованием SQL-инъекций. У OWASP есть хорошая статья о предотвращение SQL-инъекций в Java.
Что касается внедрения сценария, то самый безопасный способ предотвратить выполнение сценария, внедренного злоумышленником, - это обеспечить отображение пользовательского ввода, когда он используется в качестве вывода, в закодированном формате - для веб-приложений это будет Кодировка HTML. Эта страница OWASP показывает, как выполнять кодирование HTML в Java.
Если вы хотите защитить свое приложение от инъекции javascript, вам нужно использовать инструмент или метод перехвата, который принимает ваш javascript в качестве аргумента. В случае mongodb метод eval () может выполнять javascript на сервере mongo. Вы можете перейти по ссылке ниже, чтобы смягчить атаку ssjs. https://www.sciencedirect.com/science/article/pii/S1568494619305022