p:面板中的XSS漏洞?

时间:2014-01-04 12:38:11

标签: primefaces xss

我正在测试针对跨站点脚本漏洞的primefaces(4.0)应用程序。现在我发现了p:panel header属性的问题。

<p:panel header="#{post.title}" footer="Date: #{post.date}">

header属性的值是用户插入的数据。当post.title包含Javascript时,它会被浏览器执行。例如,当post.title为<script>alert(1)</script>时会出现弹出窗口。

我不明白为什么它在这种情况下不被编码,因为我认为在使用表达式语言时它随时会被输出编码。你能帮我解决为什么会有XSS漏洞吗?

1 个答案:

答案 0 :(得分:1)

我们也遇到了这个问题并填写了错误报告:http://code.google.com/p/primefaces/issues/detail?id=6766

此外,PrimeFaces论坛中有关于此问题的讨论: http://forum.primefaces.org/viewtopic.php?f=3&t=34678

作为一种解决方法,您可以按如下方式使用该面板:

  <p:panel>
    <f:facet name="header">
      #{myBean.usersText}
    </f:facet>
    <f:facet name="footer">
      #{myBean.usersText}                           
    </f:facet>
  </p:panel>

请注意,ELs在向用户显示时不会随时转义。这是组件或开发人员的责任。但是, h:outputText 等大多数组件都会转义给定的输入。