JSF 2.0; escape =“false”替代防止XSS?

时间:2012-04-02 08:08:46

标签: java jsf xss

在我的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吗?

谢谢!

2 个答案:

答案 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"