開啓CSP網頁安全政策防止XSS攻擊

 1、簡介
  CSP是網頁安全政策(Content Security Policy)的縮寫。是一種由開發者定義的安全性政策申明,經過CSP所約束的責任指定可信的內容來源,(內容能夠是指腳本、圖片、style 等遠程資源)。經過CSP協定,能夠防止XSS攻擊,讓web處一個安全運行的環境中。
       CSP 的實質就是白名單制度,開發者明確告訴客戶端,哪些外部資源能夠加載和執行,等同於提供白名單。它的實現和執行所有由瀏覽器完成,開發者只需提供配置。CSP 大大加強了網頁的安全性。攻擊者即便發現了漏洞,也無法注入腳本,除非還控制了一臺列入了白名單的可信主機。
 
2、開啓方式
  一種是:經過 HTTP 頭信息的Content-Security-Policy的字段。
  一種是:在網頁中設置<meta>標籤,如:
 <meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

 

3、栗子javascript

一、阻止加載不符合CSP的外部資源。java

加載資源:jquery

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>  

不開啓CSP時候能夠正常加載js:web

開啓以後:瀏覽器

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

 

二、script-src 的特殊值安全

'unsafe-inline':容許執行頁面內嵌的<script>標籤和事件監聽函數
'unsafe-eval':容許將字符串看成代碼執行,好比使用eval、setTimeout、setInterval等函數。
'nonce'值:每次HTTP迴應給出一個受權token,頁面內嵌腳本必須有這個token,纔會執行
'hash'值:列出容許執行的腳本代碼的Hash值,頁面內嵌腳本的哈希值只有吻合的狀況下,才能執行函數

 

如:設置  'unsafe-inline' 'unsafe-eval'; 以後,能夠執行以下學習

<img src="?" onerror="alert(1)">
<script type="text/javascript">
    eval('setTimeout(function(){console.log(1);},1000)');
</script>
	    

 

學習連接:  ui

阿里聚安全spa

相關文章
相關標籤/搜索