javascript - 如何防范Javascript中的客户端DOM代码注入(inject)漏洞?

标签 javascript jquery ajax

.../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/

相关文章:

javascript - 为什么存储不持久?

javascript - amCharts 4 (v4) 在饼图中显示值而不是百分比

javascript - 选择后提交表格

jquery - 在中间的 jumbotron 中获取按钮并改变外观

javascript - 如何使用 ajax 推送引擎发出通知?

javascript - HTML5 Canvas 中的 textAlign 属性在 IE 11 中无法正常工作

javascript - 如何在 ASP.NET C# 页面加载之前获取动态创建的控件的值

javascript - 将数据从 ajax GET 发送到 ejs 文件

javascript - 单击按钮时从 html 表中获取行

ajax - 使用ajax切换图像渲染?