如何清除 javascript 文件中的 Checkmarx XSS 漏洞?

问题描述 投票:0回答:0

我在我们的项目中使用 append() 以及 html(),Checkmarx 用于扫描漏洞,它报告 XSS 漏洞,所以我尝试使用纯 javascript(方法 1)创建元素以及DOMPurify 库(方法 2)。

这里是示例代码:

Ajax API 调用

$('.ktcproduct').change(function(){
     $.ajax({
           url: "/api/v1/raw/ktc_status/",
           type: "POST",
           data: {'product': productName},
           success: function (data) {
                   ktcproduct_render(data)
                                    },
           error: function (data) {
                   if (checkError(data)[0] == true){
                        anim4_noti(checkError(data)[1])
                                    }
  })

原文:

function ktcproduct_render(data){
    for (var product = 0; product<data.length; product ++){
                var tag = "<option value='"+data[product]+"'>"+data[product]+"</option>"
                $('.sourcedate').append(tag)
            }
}

我试过以下两种方法。

方法一:

function ktcproduct_render(data){

        var sourcedate = document.getElementsByClassName("sourcedate");
        for (var product = 0; product<data.length; product ++){
            var opt = document.createElement('option');
            opt.value = sourceDTList[dt]
            opt.text = sourceDTList[dt]
            sourcedate[0].appendChild(opt)
            }
   }

方法二:

function purifyDOM(tag){
    var dom_purify = DOMPurify.sanitize(tag, {ALLOWED_TAGS: ['tr', 'th', 'td', 'a', 'div', 'table', 'option', 'html', 'i']})
    return dom_purify
}

function ktcproduct_render(data){
    for (var product = 0; product<data.length; product ++){
                var tag = "<option value='"+data[product]+"'>"+data[product]+"</option>"
                var cleaned_tag = purifyDOM(tag)
                $('.sourcedate').append(cleaned_tag)
            }
}

但 Checkmarx 仍然将 ajax 响应(API 调用中的“数据”)称为漏洞。

来自Checkmarx扫描报告的信息:

应用程序的 ktcproduct_render 在生成的输出中嵌入不受信任的数据,在第 1578 行追加 webapp/ktc_app/static/assets/js/customjs.js。这种不受信任的数据直接嵌入到输出中,没有 适当的清理或编码,使攻击者能够将恶意代码注入输出。

如何清理 ajax 响应??还有其他建议吗??

javascript jquery ajax xss checkmarx
© www.soinside.com 2019 - 2024. All rights reserved.