Veracode 扫描:jQuery html 方法显示网页问题中脚本相关 HTML 标签的不当中和

Veracode Scan: jQuery html method showing Improper Neutralization of Script-Related HTML Tags in a Web Page issue

Veracode 在下面的行中指出了 网页中与脚本相关的 HTML 标记的不当中和(基本 XSS) 问题。

$('#SummaryDiv').html(data);

$.ajax({
            url: 'Target_URL',
            type: 'GET',                
            datatype: "json",
            traditional: true,
            cache: false
        }).done(function (data) {               
            $('#SummaryDiv').html(data);

我正在通过 ajax 调用将 MVC 视图结果绑定到 DIV。检查了 Whosebug 中的文章,但没有运气。解决此 veracode 问题的可能解决方案是什么。

所以您要将 json 直接放入 div?我想这意味着您不希望响应包含任何要呈现的 HTML,而是希望按原样显示 JSON。 所以解决方法是使用 jQuery 的 .text() 而不是 .html()

编辑:如果您需要将其渲染为 HTML,您应该先使用 DOMPurify 对其进行清理。

我已阅读以下文章并通过对从 MVC ViewResult 收到的 html 进行编码解决了问题。

DOM 基于 XSS 预防作弊 Sheet https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.md

OWASP 企业安全 API (ESAPI) https://github.com/ESAPI/owasp-esapi-js/blob/28b2767731e672c620b86701a9f98f235951392b/README.md

ESAPI 编码 un-trusted 内容的方法:$ESAPI.encoder().encodeForHTML(content)