防止 JSF <f:param> 中的 XSS 反射
Posted
技术标签:
【中文标题】防止 JSF <f:param> 中的 XSS 反射【英文标题】:Prevent XSS Reflection in JSF <f:param> 【发布时间】:2017-06-05 17:21:34 【问题描述】:我正在支持使用 JSF(和 JSP)的遗留应用程序。我正在尽我所能通过在代码中添加验证器和转义符来防止 XSS。我是 JSF 的新手。
代码示例(在 xhtml 中):
<h:form id="someForm">
<f:param name="someProperty" value="#someBean.someProperty"/>
</h:form>
我的问题 我们的安全扫描器说这很容易受到 XSS 反射的影响。我想为属性值添加转义。
我的研究: 我读过 JSF 通常会自动转义 .它有一个参数,您必须将其设置为 fales 才能禁用它。不过好像没有这个功能。我发现了一个可能有效的建议代码 sn-p:
<f:param name="someProperty" value="#fn:escapeXml(someBean.someProperty)"/>
但是,当我使用 fn:escapeXml 时,页面无法加载。这通常是如何解决的?
注意,这是一个重要的遗留应用程序。希望采取最少的规避行动。
上述文章: JSF 2.0; escape="false" alternative to prevent XSS?
【问题讨论】:
错误信息是什么? 浏览器错误没有用:无法打开localhost:8080/someFile.jsf 我能够在调试模式下从控制台中得到它:原因:javax.el.ELException:函数'fn:escapeXml'不是找到 【参考方案1】:这很尴尬。 结果是我的 xhtml 文件中的一个缺少所需的导入: xmlns:fn="http://java.sun.com/jsp/jstl/functions"
我添加了它,它现在似乎可以工作了!
【讨论】:
以上是关于防止 JSF <f:param> 中的 XSS 反射的主要内容,如果未能解决你的问题,请参考以下文章