JSF 2.0;转义= "false"防止XSS的替代方法?



在我的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"

最新更新