前端常見安全問題及解決方案

xss安全漏洞

XSS漏洞是經過URL帶入的,這種帶入主要是前端解析url中的參數,並對數參數執行了innerHTML或者html或者append操做。在將參數html()或者append()到html文件中時,會執行其中的js代碼,被錯誤用戶獲取到cookie等信息。javascript

原始連接: 
https://xx.xxx.com/index.html?nick=aa
被xss注入以後的連接: 
https://xx.xxx.com/index.html?nick=qqqa<img src=1 onerror=alert(document.cookie)>
xss漏洞修復:
function filterXss(str, regExp){
  // var regex = /<(\S*?)[^>]*>.*?|<.*? \/>/gi;
  // 去除包含<>內容的,防止xss漏洞
  var filterValue = str.replace(/<.*?>/g,'');
  // 去除<開頭類型的xss漏洞
  filterValue = str.replace(/<+.*$/g,'');

  if(regExp && !regExp.test(filterValue)){
    filterValue = '';
  }
  return filterValue;
}

修復方式:
對URL中的參數包含<>標籤的內容進行過濾,防止任何js代碼執行的可能性。同時能夠對帶有url的參數(好比用戶的頭像圖片連接)進行域名限制,經過域名限制能夠不須要再過濾類型,只須要限制域名,由於這裏用戶有可能輸入了一些能夠下載內容的URL,讓用戶下載一些並不須要的東西,此時過濾域名最安全。html


csrf安全漏洞

csrf是經過仿造客戶端的請求獲取信息的,對於jsonp的請求,客戶端確實能夠仿造,可是由於對於ajax的請求,有同源策略限制,已經作了域名過濾,因此通常不會有問題。前端

修復方案:java

  1. 客戶端帶一個特定標識到服務端,好比token,服務端檢查token
  2. 服務端判斷refer,對refer的域名進行過濾和攔截

refer指向原則:ajax

  1. 在a.html裏面發送了ab.json請求,則服務端拿到的refer地址是a.html的地址,即當前頁面的html地址
  2. 直接在瀏覽器裏面輸入該地址(html或者json),則refer爲空
  3. 從上個頁面a.html跳轉到b.html,則b.html的refer地址爲a.html
相關文章
相關標籤/搜索