在我的jsf Web应用程序中,我使用messages.properties来输出一些文本。此文本可能有html换行符,因此格式化输出文本。
如果我将escape="false"属性设置为outputxt,那么这一切都很好。
问题是,这个值为"false"的属性不能阻止vorXSS(跨站点脚本),所以我删除了这个属性并使用默认值"true"。
所以,我不想分割所有的文本行来分隔消息中的属性。属性如本例所示:
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吗?
谢谢!
应该可以使用http://java.sun.com/jsp/jstl/functions
命名空间中的标准jstl函数来转义用户提供的参数:
<h:outputFormat value="#{bundle.myMessage}" escape="false">
<f:param value="#{fn:escapeXml(param)}"/>
</h:outputFormat>
XSS不可能发生,如果您从安全源输出某些HTML,而该源不可由用户输入或编辑。在这种情况下,您可以安全地使用escape="false"
。