跨站点脚本验证不正确ESAPI + JSF Fortify

时间:2018-10-29 16:38:00

标签: xss fortify esapi

我想使用ESAPI库使用特定方法对value属性进行编码:ESAPI.encoder()。encodeForHTMLAttribute()。我的问题是我应该在JSF本身还是在MessageBean中使用此方法?如果我要在JSF中对此进行编码,这是正确的语法吗?

<h3></f:verbatim><h:outputText id="frsubject" value="#{MessageBean.frSubject}" /><f:verbatim></h3>

<h3></f:verbatim><h:outputText id="frsubject" value=<%= ESAPI.encoder().encodeForHTMLAttribute("#{MessageBean.frSubject}") %> /><f:verbatim></h3>

Thank @BalusC。抱歉,我的反应太晚了,给人的印象是,使用xss攻击对我很安全(使用JSF 1.2)。但是,在强化报告中,解释如下:

使用某些编码结构,例如带有escapeXml =“ true”属性的标记(默认行为), 防止部分但不是全部跨站点脚本攻击。根据数据显示的上下文,字符超出 HTML编码的基本<,>,&和“以及XML编码的<,>,&,”和'之外的那些可能具有元含义。 依靠这种编码结构等效于使用弱黑名单来防止跨站点脚本编写,并且可能 允许攻击者注入将在浏览器中执行的恶意代码。因为准确地识别上下文 并非总是可以静态显示数据,Fortify Static Code Analyzer甚至报告跨站点脚本发现 在应用编码时显示为跨站点脚本:验证不正确的问题。

0 个答案:

没有答案