在我的jsf webapplication中,我使用messages.properties输出一些文本。这个文本可能有html换行符,所以格式化outputtext。
如果我将escape =“false”属性设置为outputtext,那一切正常。
问题是,这个值为“false”的属性不会阻止vor XSS(跨站点脚本),所以我删除了这个属性并使用default-value“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吗?
谢谢!
答案 0 :(得分:4)
应该可以使用http://java.sun.com/jsp/jstl/functions
命名空间中的standard jstl functions来转义用户提供的参数:
<h:outputFormat value="#{bundle.myMessage}" escape="false">
<f:param value="#{fn:escapeXml(param)}"/>
</h:outputFormat>
答案 1 :(得分:1)
如果您从安全源输出某些HTML,并且用户无法输入或编辑,则不会发生XSS。在这种情况下,您可以安全地使用escape="false"
。