предотвратить XSS-атаки в JSP

Я хочу предотвратить XSS-атаки в своем веб-приложении, поэтому я хочу избежать данных, введенных пользователем в форме, прежде чем сохранять их в БД, чтобы показать их на другой странице JSP, и я колеблюсь между двумя подходами:

StringEscapeUtils.escapeHtml() , что для ввода REGGAETON / SALSA дает тот же результат, но для ESAPI.encoder().encodeForHTML() что для того же ввода вывод будет REGGAETON & #x2f; САЛЬСА


person María Belén Esteban Menéndez    schedule 30.06.2016    source источник


Ответы (2)


Не сохраняйте экранированные данные, экранируйте их, когда вам нужно их отобразить:

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

Что касается способа закодировать его для отображения в контексте html, оба способа подходят.

Кроме того, чтобы улучшить защиту от XSS, вы должны изучить CSP (политику безопасности контента), это очень помогает, особенно для новых проектов.

person Tom    schedule 30.06.2016

Используйте PreparedStatement для ввода данных в базу данных. Не убегайте от них, так как это может привести к потере исходных данных.

В файле jsp всякий раз, когда вы хотите отобразить значение, введенное пользователем, вы можете сделать это:

<c:out value="${variable}" escapeXml="true"/>
person Bu Saeed    schedule 25.02.2020