Я изучаю некоторое предотвращение XSS в своем JAVA-приложении.
У меня в настоящее время есть сделанные на заказ стандартные программы, которые выйдут из любого HTML, сохраненного в базе данных для безопасного дисплея в моем jsps. Однако я использовал бы созданный в/стандартный метод сделать это, если это возможно.
Я в настоящее время не кодирую данные, которые отправляются в базу данных, но хотели бы начать делать это также.
Там кто-либо создается в методах, которые могут помочь мне достигнуть этого?
Обычно вы избегаете XSS во время отображения, а не во время хранения. В JSP вы можете использовать JSTL (просто бросьте jstl-1.2.jar в /WEB-INF/lib
)
тег или fn:escapeXml
функцию для этого. Например,
<input name="foo" value="<c:out value="${param.foo}" />">
или
<input name="foo" value="${fn:escapeXml(param.foo)}">
Вот и все. Если вы делаете это и при обработке ввода и/или хранении в БД, то все это размазывается по бизнес-коду и/или в БД. Вы не должны этого делать, это только проблемы с обслуживанием, и вы рискуете получить двойные эскейпы или больше, когда вы делаете это в разных местах (например, &
станут &
вместо &
, так что конечный пользователь будет буквально видеть &
вместо &
. Код и БД не чувствительны к XSS. Только представление чувствительно. Вы должны избегать его только прямо здесь.
Update: вы разместили 4 темы на одну и ту же тему:
Я только предупрежу: вам не нужно экранировать его в servlet/filter/javacode/database/whatever. Вы только неоправданно усложняете ситуацию. Просто экранируйте его при отображении. Вот и все.
не встроен, но проверьте фильтр owasp esapi , он должен делать то, что вы ищете, и многое другое. Это отличная библиотека безопасности с открытым исходным кодом, написанная умными парнями и девушками из Owasp («Проект безопасности открытых веб-приложений»).