如何正确转义此JSP代码以避免存储的XSS值?

How to properly escape this JSP code to avoid Stored XSS valnerabilities?

提问人:Wes 提问时间:8/5/2023 最后编辑:Roman CWes 更新时间:8/6/2023 访问量:49

问:

这些漏洞被标记为具有“存储的 XSS 漏洞”。需要知道如何正确转义以下内容以解决此类跨站点脚本漏洞吗?

out.print("<td headers=\""+headerIDs.get(i-1)+"\""+ (wrap?"":"nowrap")+">"+StringUtils.isNotEmpty(value)? value : "&nbsp;"+"</td>");

out.print("<td headers=\""+headerIDs.get(i-1)+"\""+ (wrap?"":"nowrap")+">"+StringUtils.escapeXML(value, "&nbsp;")+"</td>");

我已经看到了几种可能的解决方案,但不确定哪一个更好?

StringUtils.renderSafeHtml(...)
Encoder.forHtml(...)

我的队友正在用来解决我们代码中其他类型的 XSS 漏洞,所以我更喜欢使用这个漏洞。但是,我在网上看到的所有示例都建议使用“存储的 XSS”。renderSafeHtml(...)Encoder.forHtml(...)

请记住,由于我们使用 Struts,因此不是一种选择。org.springframework.web.util.HtmlUtils.htmlEscape

Java 安全性 JSP XSS STRUTS

评论

0赞 Roman C 8/6/2023
您使用什么 Struts 版本?
1赞 Dave Newton 8/8/2023
看看它们并选择一个,或者只使用你们已经在使用的那个。如果其中任何一个都能满足您的需求,这似乎比真正必要的兔子洞要多。

答: 暂无答案