2

Checkmarx 检测到代码中存在安全漏洞:Cross-domain jsonpajax call not XSSsafe。给出的建议为:没有为Content-Disposition标头定义显式文件名。文件名属性是必需的,以防止浏览器假定资源是可执行文件并下载可能的恶意文件。”

该代码工作正常,但安全工具已识别出这一点。

$.ajax({
 url: "https://www.example.com?format=rich&client=aem_frontend",
 dataType: "jsonp",
 data: "&q=" + request.term,
 success: function(data) {
  $('.searchPanel').css('display', 'none');
  if (data.results.length > 0) {
   response($.map(data.results, function(item) {
    return {
     label: item.name
    }
   }));
  } else {
   $('.ui-autocomplete ').css('display', 'none');
   $('.searchPanel').css('display', 'block');
   $('.searchPanel').css('display', 'block');
   // $('#zero-result').removeClass("noDisplay").css('display','block');
   //$('#err_text').text("Whoops! We couldn’t find any matches for "+request.term);
  }

 },
 error: function(data) {
  alert("inside failure" + data.status + ' ' + data.statusText);
 }
});

如何修复这个漏洞?

4

1 回答 1

-1

在 Jquery Ajax 请求中,您可以在其中定义标头,例如下面给出的示例。

$.ajax({
    url: "https://www.example.com?format=rich&client=aem_frontend",



    headers: {
        'Content-Type': 'application/json'
    },



    dataType: "jsonp",
    data: "&q=" + request.term,
    success: function(data) {
        $('.searchPanel').css('display', 'none');
        if (data.results.length > 0) {
            response($.map(data.results, function(item) {
                return {
                    label: item.name
                }
            }));
        }
        else {
            $('.ui-autocomplete ').css('display', 'none');
            $('.searchPanel').css('display', 'block');
            $('.searchPanel').css('display', 'block');
            // $('#zero-result').removeClass("noDisplay").css('display','block');
            //$('#err_text').text("Whoops! We couldn’t find any matches for "+request.term);
        }

    },
    error: function(data) {
        alert("inside failure" + data.status + ' ' + data.statusText);
    }
});
于 2020-10-14T08:03:10.820 回答