JSF 2.0;escape = "ложная" альтернатива для предотвращения XSS? - PullRequest
3 голосов
/ 02 апреля 2012

В моем jsf web-приложении я использую messages.properties для вывода некоторого текста.Этот текст может иметь html разрывы строк, поэтому отформатируйте выходной текст.

Это все работает нормально, если я установил атрибут escape = "false" для выходного текста.

Проблема в том, что этот атрибут сЗначение «false» не предотвращает vor XSS (межсайтовый скриптинг), поэтому я удаляю этот атрибут и использую значение по умолчанию «true».

Итак, я не хочу разбивать все строки текста, чтобы разделить свойства в моемmessages.properties, как в этом примере:

mytext = This is my text<br />with line break and user value {0}...

после:

mytext1 = This is my text
mytext2 = with line break and user value {0}...

есть ли другой способ, кроме escape = "false", но который препятствует xss?

спасибо!

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012

Должно быть возможно просто экранировать предоставленный пользователем параметр, используя стандартные функции jstl в пространстве имен http://java.sun.com/jsp/jstl/functions:

<h:outputFormat value="#{bundle.myMessage}" escape="false">
    <f:param value="#{fn:escapeXml(param)}"/>
</h:outputFormat>
1 голос
/ 02 апреля 2012

XSS не может произойти, если вы выводите некоторый HTML-код из безопасного источника, который не вводится или не редактируется пользователем.В этом случае вы можете безопасно использовать escape="false".

...