xxx行的方法函数... / addAnnouncements.js获取客户端控制的数据 json元素。此元素的值在客户端代码中使用,而未经过适当的清理或验证 最终在linse yyy和zzz of ... / addAnnouncements.js中集成到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代码注入攻击 .......
if(json.ERROR =='') {
和
alert(json.ERROR);
有些人可以帮助我如何消毒上述场景以满足Checkmarx的需要吗?
答案 0 :(得分:0)
请参考下面的代码应该是完整的帮助 -
JSON是字符串格式,因此我们无法通过点(。)
进行访问JSON.parse()用于JSON到Object的转换。现在我们可以访问了 通过使用点(。)。
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) {
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) {}
}