【问题标题】:Veracode Scan: jQuery html method showing Improper Neutralization of Script-Related HTML Tags in a Web Page issueVeracode 扫描:jQuery html 方法显示网页问题中与脚本相关的 HTML 标记的不正确中和
【发布时间】:2020-08-14 08:56:31
【问题描述】:

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。检查了stackoverflow中的文章,但没有运气。解决此验证码问题的可能解决方案是什么。

【问题讨论】:

    标签: javascript jquery ajax xss veracode


    【解决方案1】:

    我已按照以下文章并通过对从 MVC ViewResult 接收到的 html 进行编码来解决此问题。

    基于 DOM 的 XSS 预防备忘单 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 方法:$ESAPI.encoder().encodeForHTML(content)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我总是从控制器方法接收 html。 action 方法返回 html 内容。
      • 如果它应该返回 HTML,你为什么要使用 datatype: "json" 呢? target_URL 是否由最终用户以某种方式控制?
      • 我的错,预期的类型只有 html。我忘记更新了。
      猜你喜欢
      • 2014-05-13
      • 2018-11-24
      • 2020-03-24
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2012-12-08
      • 2021-05-18
      相关资源
      最近更新 更多