.../addAnnouncements.js 第 xxx 行的方法函数获取客户端控制的数据 json 元素。该元素的值在客户端代码中使用,而没有经过适当的清理或验证,并且 最终集成到 .../addAnnouncements.js 的 linse yyy 和 zzz 函数中的 HTML 代码中。
脚本如下:
function addAnnouncement() {
try {
var formData = $('form').serialize();
$('div.block').block();
jQuery.ajax({
type: "POST",
url: "bat.ajax",
data: formData,
dataType: 'json',
cache: false,
xxx: success: function(json) {
yyy: if(json.ERROR == '') {
alert("The announcement has been saved");
$('div.block').unblock();
} else {
zzz: alert(json.ERROR);
$('div.block').unblock();
}
},
error: function() {
$('div.block').unblock();
alert('The request could not be fulfilled due an internal error, please try again.');
}
});
} catch(e) {}
}
以下行可能会启用 DOM 代码注入(inject)攻击 ......
if(json.ERROR =='') {
和
alert(json.ERROR);
有人可以帮助我如何清理上述场景以满足 Checkmarx 的要求吗?
最佳答案
请引用下面的代码,它应该有帮助-
JSON is in string format so we can't access by dot(.)
JSON.parse() is used for JSON to Object conversion. Now we can access by using dot(.).
函数addAnnouncement() {
try {
var formData = $('form').serialize();
$('div.block').block();
jQuery.ajax({
type: "POST",
url: "bat.ajax",
data: formData,
dataType: 'json',
cache: false,
xxx: success: function(json) {
var json = JSON.parse(json);
yyy: if(json.ERROR == '') {
alert("The announcement has been saved");
$('div.block').unblock();
} else {
zzz: alert(json.ERROR);
$('div.block').unblock();
}
},
error: function() {
$('div.block').unblock();
alert('The request could not be fulfilled due an internal error, please try again.');
}
});
} catch(e) {}
}
关于javascript - 如何防范Javascript中的客户端DOM代码注入(inject)漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315502/