Checkmarx在代码中检测到一个安全漏洞:跨域jsonp ajax调用而不是XSS安全。给出的建议是:未为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);
}
});如何修复此漏洞?
发布于 2020-10-14 08:03:10
在Jquery请求中,您可以在其中定义头部,例如,下面给出。
$.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);
}
});https://stackoverflow.com/questions/52813563
复制相似问题