首页 文章

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

提问于
浏览
3

在我的jsf webapplication中,我使用messages.properties输出一些文本 . 此文本可能有html换行符,因此格式化outputtext .

如果我将escape =“false”属性设置为outputtext,那一切都正常 .

问题是,此值为“false”的属性不会阻止vor XSS(跨站点脚本),因此我删除此属性并使用default-value“true” .

所以,我不想将所有文本行拆分为我的messages.properties中的单独属性,如下例所示:

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

后:

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

有什么办法,除了逃避=“假”但是阻止了xss?

谢谢!

2 回答

  • 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

    XSS可以从安全源输出一些HTML,这些HTML不是用户输入或编辑的 . 在这种情况下,您可以安全地使用 escape="false" .

相关问题