簡體   English   中英

如何防止javascript中的客戶端DOM XSS漏洞?

[英]How to prevent Client DOM XSS vulnerability in javascript?

對我的代碼進行 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);
    });
  },
}

您可以使用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));
    });
  },
}

嘗試將您的代碼修改為類似於以下內容:

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));
        });   
    }, 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM