【发布时间】:2017-09-20 07:13:47
【问题描述】:
.../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 代码注入攻击 .......
if(json.ERROR =='') {
和
alert(json.ERROR);
可以帮助我如何清理上述场景以满足 Checkmarx 的要求吗?
【问题讨论】:
-
JSON 的东西每天都在变坏……什么是“json 元素”?
-
嗨,Teemu,我在这里将 json 作为变量...它可以是任何结果或任何变量
-
JSON是一种数据传输格式,读入脚本时以字符串表示,字符串中没有“元素”。
-
是的,我同意你的观点,JSON 是一种数据传输格式。你能建议如何清理 if(json.ERROR =='') { } 和 alert(json.ERROR);跨度>
-
我很确定 Checkmarx 在这两种情况下都提到了警报。只需删除警报。无论它是否真的是一个安全问题,都值得商榷,您可以通过开发工具和用户脚本向 DOM 注入几乎任何东西。
标签: javascript jquery ajax