JSP 中的 Veracode 问题

Posted

技术标签:

【中文标题】JSP 中的 Veracode 问题【英文标题】:Veracode issue in JSP 【发布时间】:2014-12-26 03:12:47 【问题描述】:

我在下面的行中遇到验证码问题

<input type = "hidden" name = "studentName" value = "<%=viewBean.getStudName()%>">

问题出在&lt;%=viewBean.getStudName()%&gt; 在这里,报告的问题是“网页中与脚本相关的 html 标记的不正确中和(基本 XSS)。我已经尝试了 cwe.mitre.org 中给出的修复,但我无法正确应用它。任何人都可以帮助解决这个问题吗?解决问题?

【问题讨论】:

你能标出哪个答案适合你吗? 【参考方案1】:

使用

<c:out value=$viewBean.studName/>

而是转义XML

【讨论】:

【参考方案2】:

根据CWE

软件从上游组件接收输入,但它确实 不中和或错误中和特殊字符,例如 "" 和 "&" 可以解释为 Web 脚本元素 当它们被发送到处理网页的下游组件时。

你需要对html进行转义,如果你按照@jigar的建议使用jstl标签就可以了。

关于 SO 的一些信息即将修复错误,

    Veracode - Improper Neutralization of Script-Related HTML tags in a Web Page (Basic XSS) How to fix Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) with error message?

【讨论】:

【参考方案3】:

在jsp中包含下面的jstl taglib

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

并使用

value="$fn:escapeXml(viewBean.getStudName())"

如果使用JSTL核心&lt;c:out/&gt;,可以使用escapeXml="true"来避免XSS。

【讨论】:

【参考方案4】:

您需要在打印值时使用 html 编码。所以它给出了错误。所以它应该被编码为 value = "">

您需要导入 org.owasp.esapi.ESAPI 和 org.owasp.esapi.Encoder。

这肯定会解决问题..

【讨论】:

【参考方案5】:
<input type = "hidden" name = "studentName" value = "<%=StringEscapeUtils.escapeHtml(viewBean.getStudName())%>">

这样使用。它现在按照@Jigar Joshi 和@San Krish 的建议工作

【讨论】:

以上是关于JSP 中的 Veracode 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用veracode时com.google.android.gms.analytics中的“熵不足(CWE ID 331)”

在我将解决方案作为 OWAPS 和 Roslyn 安全卫士的建议应用后,Veracode 仍然报告操作系统命令注入问题

如何在这个 c:out 中避免 XSS?

java中动态创建的order by子句在Veracode扫描中显示为sql注入问题

为啥我的函数参数化后 Veracode 仍然报告 CWE-89?

Veracode - 网页中与脚本相关的 HTML 标记的不正确中和(基本 XSS)