溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Html5中內(nèi)容安全策略CSP的示例分析

發(fā)布時(shí)間:2021-09-13 16:28:52 來源:億速云 閱讀:154 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“Html5中內(nèi)容安全策略CSP的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Html5中內(nèi)容安全策略CSP的示例分析”這篇文章吧。

前言:

Cordova不支持內(nèi)聯(lián)事件,所以點(diǎn)擊事件必須提取到j(luò)s里面.
以下是從官網(wǎng)摘抄下來,希望對(duì)您有所幫助

為了緩解大量潛在的跨站點(diǎn)腳本問題,Chrome的擴(kuò)展系統(tǒng)已經(jīng)納入了內(nèi)容安全策略(CSP)的一般概念。 這引入了一些相當(dāng)嚴(yán)格的策略,默認(rèn)情況下將使擴(kuò)展更加安全,并為您提供了創(chuàng)建和實(shí)施管理可由擴(kuò)展和應(yīng)用程序加載和執(zhí)行的內(nèi)容類型的規(guī)則的功能。

一般來說,CSP作為黑客/白名單機(jī)制,用于擴(kuò)展程序加載或執(zhí)行的資源。 為您的擴(kuò)展定義合理的策略,您可以仔細(xì)考慮擴(kuò)展所需的資源,并要求瀏覽器確保這些資源是您的擴(kuò)展程序可以訪問的唯一資源。 這些策略提供超出您的擴(kuò)展請(qǐng)求的主機(jī)權(quán)限的安全性; 它們是一個(gè)額外的保護(hù)層,而不是替代。

在網(wǎng)絡(luò)上,這樣的策略是通過HTTP頭或元素來定義的。 在Chrome的擴(kuò)展系統(tǒng)中,兩者都不是一個(gè)合適的機(jī)制。 相反,擴(kuò)展的策略是通過擴(kuò)展名的manifest.json文件定義的,如下所示:

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

有關(guān)CSP語法的完整詳細(xì)信息,請(qǐng)參閱內(nèi)容安全策略規(guī)范以及有關(guān)HTML5Rocks的“內(nèi)容安全策略簡介”一文。

默認(rèn)策略限制

沒有定義manifest_version軟件包沒有默認(rèn)的內(nèi)容安全策略。 那些選擇manifest_version 2,具有默認(rèn)內(nèi)容安全策略:

script-src’self’;  object-src’self’

此策略通過三種方式限制擴(kuò)展和應(yīng)用程序來增加安全性:

(1)評(píng)估和相關(guān)功能被禁用

以下代碼不起作用:

警報(bào)(的eval( “foo.bar.baz”));

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

評(píng)估這樣的JavaScript字符串是一個(gè)常見的XSS攻擊向量。 相反,你應(yīng)該編寫如下代碼:

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)內(nèi)聯(lián)JavaScript不會(huì)被執(zhí)行

內(nèi)聯(lián)JavaScript不會(huì)被執(zhí)行。 此限制禁止內(nèi)嵌塊和內(nèi)聯(lián)事件處理程序(例如 )。

第一個(gè)限制通過使您不小心執(zhí)行惡意第三方提供的腳本來消除大量的跨站點(diǎn)腳本攻擊。 但是,它需要您將代碼寫入內(nèi)容與行為之間的干凈分離(您當(dāng)然應(yīng)該做到這一點(diǎn))對(duì)嗎? 一個(gè)例子可能使這更清楚。 您可能會(huì)嘗試編寫一個(gè)瀏覽器操作的彈出窗口作為單個(gè)popup.html包含:

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

點(diǎn)擊awesomeness!

放寬默認(rèn)策略

(1)內(nèi)聯(lián)腳本

直到Chrome 45,沒有放寬對(duì)執(zhí)行內(nèi)聯(lián)JavaScript的限制的機(jī)制。 特別是,設(shè)置包含’unsafe-inline’的腳本策略將不起作用。

從Chrome 46起,可以通過在策略中指定源代碼的base64編碼哈希來將內(nèi)聯(lián)腳本列入白名單。 該散列必須以使用的散列算法(sha256,sha384或sha512)為前綴。

以上是“Html5中內(nèi)容安全策略CSP的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI