如何防止javascript中的Client DOM XSS漏洞?

时间:2017-09-19 12:17:39

标签: javascript jquery

在我的代码上进行checkmarx扫描后,我收到以下信息。

  

在... \ action \ searchFun.js第23行执行的方法获取表单元素的用户输入。

     

此元素的值然后流经代码而未经过适当的清理或验证,并最终在../action/searchFun.js第28行的函数中显示给用户。这可能会导致DOM XSS攻击。

有些人可以帮助我如何消毒上述场景以满足Checkmarx的需求吗? 脚本如下:

function searchAnnouncements(){
  $('#loadingAnnouncements').html('Loading...');
  var formData = $('form').serialize();

  jQuery.ajax({
    type: "post",
    url:  "bat.ajax",
    data: formData,
    cache: false,
    dataType: "json",
    cache: false,
    success: function(json) {
      $('div.block').unblock();
      $('#loadingAnnouncements').html('');
      if (json.resultSize > 0)
        $('#searchResults').html(json.searchResult);
    });
  },
}

1 个答案:

答案 0 :(得分:1)

您可以使用DOMPurify库。 https://github.com/cure53/DOMPurify

这可以通过保持安全的HTML标记来阻止XSS注入。

function searchAnnouncements(){
  $('#loadingAnnouncements').html('Loading...');
  var formData = $('form').serialize();

  jQuery.ajax({
    type: "post",
    url:  "bat.ajax",
    data: formData,
    cache: false,
    dataType: "json",
    cache: false,
    success: function(json) {
      $('div.block').unblock();
      $('#loadingAnnouncements').html('');
      if (json.resultSize > 0)
        $('#searchResults').html(DOMPurify.sanitize(json.searchResult));
    });
  },
}