首頁  >  文章  >  web前端  >  Html5中內容安全策略(CSP)

Html5中內容安全策略(CSP)

一个新手
一个新手原創
2017-10-07 11:40:002655瀏覽

前言:

Cordova不支持内联事件,所以点击事件必须提取到js里面.
以下是从官网摘抄下来,希望对您有所帮助

為了緩解大量潛在的跨站點腳本問題,Chrome的擴展系統已經納入了內容安全策略(CSP)的一般概念。 這引入了一些相當嚴格的策略,預設將使擴充功能更加安全,並為您提供了創建和實施管理可由擴充功能和應用程式載入和執行的內容類型的規則的功能。

一般來說,CSP作為駭客/白名單機制,用於擴充程式載入或執行的資源。 為您的擴充功能定義合理的策略,您可以仔細考慮擴充所需的資源,並要求瀏覽器確保這些資源是您的擴充功能可以存取的唯一資源。 這些策略提供超出您的擴充請求的主機權限的安全性; 它們是一個額外的保護層,而不是替代。

在網路上,這樣的策略是透過HTTP頭或​​元素來定義的。 在Chrome的擴展系統中,兩者都不是一個合適的機制。 相反,擴展的策略是通過擴展名的manifest.json文件定義的,如下所示:

{ 
   … 
   “content_security_policy”:“[POLICY STRING GOES HERE]” 
   …
}

有關CSP語法的完整詳細信息,請參閱內容安全策略規範以及有關HTML5Rocks的“內容安全策略簡介”一文。

預設政策限制

沒有定義manifest_version軟體包沒有預設的內容安全策略。 那些選擇manifest_version 2,具有預設內容安全策略:

script-src'self';  object-src'self'

此策略透過三種方式限制擴充功能和應用程式來增加安全性:

(1)評估和相關功能被停用

以下程式碼不起作用:

警報(的eval( “foo.bar .baz」));

window.setTimeout(“alert(’hi’)”,10); 
 window.setInterval(“alert(’hi’)”,10); 
 new Function(“return foo.bar.baz”);

評估這樣的JavaScript字串是一個常見的XSS攻擊向量。 相反,你應該寫如下程式碼:

alert(foo && foo.bar && foo.bar.baz); 
window.setTimeout(function(){alert(’hi’);},10); 
window.setInterval(function(){alert(’hi’);},10); 
function(){return foo && foo.bar && foo.bar.baz};

(2)內嵌JavaScript不會被執行

內嵌JavaScript不會被執行。 此限制禁止內嵌區塊和內聯事件處理程式(例如 )。

第一個限制透過讓您不小心執行惡意第三方提供的腳本來消除大量的跨網站腳本攻擊。 但是,它需要您將程式碼寫入內容與行為之間的乾淨分開(您當然應該做到這一點)對嗎? 一個例子可能使這件事更清楚。 您可能會嘗試編寫一個瀏覽器操作的彈出視窗作為單一popup.html包含:

<!doctype html> 
      My Awesome Popup! 
       function awesome(){ 
         //做某事真棒! 
       }
   function totalAwesome(){
     //做某事真棒!
   }
  函数clickHandler(element){
     setTimeout( “awesome();getherAwesome()” ,1000);
   }
   function main(){
     //初始化工作在这里。
   }
 </ SCRIPT>

     點擊awesomeness!

放寬預設策略

(1)內聯腳本

直到Chrome 45,沒有放寬對執行內聯JavaScript的限制的機制。 特別是,設定包含’unsafe-inline’的腳本策略將無法運作。

從Chrome 46起,可以透過在策略中指定原始程式碼的base64編碼雜湊來將內聯腳本列入白名單。 此雜湊必須以使用的雜湊演算法(sha256,sha384或sha512)為前綴。 有關範例的

以上是Html5中內容安全策略(CSP)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn