0

通常我使用 veracode 扫描我的代码更改以检测安全漏洞。现在数据库中有一个字符串,我在一个名为的字符串中收集它custFunctionality,以前我在 jsp 中将其显示为:

out.println(<%= custFunctionality %>);

好吧,veracode 扫描了它,让我知道它构成了安全缺陷。

所以我c: out在这里用作:

<c:out escapexml='false' value='${custFunctionality }'/>

现在这里的问题是该字符串由与html相关的标记和我需要在页面中显示的特殊字符组成,如果我不提供escapexml='false'这些字符并且标记不会实现。但是,由于代码中存在escapexml='false'字符串,这构成了veracode的安全缺陷,因为我在重新扫描文件后发现了它。

谁能建议我摆脱这个泥潭的替代解决方案?

4

1 回答 1

0

你要的是两个不同的东西。获取特殊字符并向用户直观地显示它们是相当简单的。将它们作为标记安全地插入页面更为复杂。

视频显示:

您在这里要做的是将浏览器想要解释的特殊字符作为标记并以向浏览器指示它应该只显示它​​的方式对其进行转义(或编码)。Alex 推荐了 StringEscapeUtils,它应该可以帮助你做到这一点。(请记住,每个上下文都有自己的转义规则,因此适用于 html 的内容不一定适用于 css 和 javascript。)

标记插入:

在这种情况下,您需要对输入进行一些验证,以确保您没有插入影响页面行为的内容。插入一些...标记可能没问题,插入 javascript 是有风险的。挑战在于捕捉人们可能试图逃避您的过滤器的所有方式。如果您的网站足够有趣,人们会尝试利用此功能。

于 2013-07-03T16:34:50.410 回答