2

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

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

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

4

5 回答 5

1

利用

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

相反,它逃脱了XML

于 2014-10-30T07:03:17.330 回答
0

在jsp中包含以下jstl taglib

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

并使用

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

如果使用 JSTL core <c:out/>,可以使用escapeXml="true"来避免 XSS。

于 2015-04-08T15:48:55.597 回答
0
<input type = "hidden" name = "studentName" value = "<%=StringEscapeUtils.escapeHtml(viewBean.getStudName())%>">

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

于 2014-10-30T09:36:00.390 回答
0

根据CWE,

该软件接收来自上游组件的输入,但它不会中和或错误地中和特殊字符,例如“<”、“>”和“&”,这些字符在发送到下游组件时可能被解释为 Web 脚本元素处理网页。

jstl您需要转义 html,如果您使用@jigar 建议的标签,则可以完成。

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

  1. Veracode - 网页中与脚本相关的 HTML 标记的不正确中和(基本 XSS)
  2. 如何使用错误消息修复网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)?
于 2014-10-30T07:20:41.623 回答
0

您需要在打印值时使用 html 编码。所以它给出了错误。所以它应该被编码为 value = "<%=ESAPI.encoder().encodeForHtml(viewBean.getStudName())%>">

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

这肯定会解决问题..

于 2016-01-06T12:53:44.353 回答