国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用SRI保護(hù)你的網(wǎng)站免受第三方CDN惡意攻擊

番茄西紅柿 / 3688人閱讀

摘要:它使用哈希值檢查確保第三方資源的完整性。只要開發(fā)者提供了被需下載資源的哈希值,瀏覽器就可以檢查實(shí)際下載的文件是否與預(yù)期的哈希值匹配。網(wǎng)上也有現(xiàn)成的哈希值生成器,方便好用與你可以使用內(nèi)容安全政策強(qiáng)制要求當(dāng)前頁(yè)面所有腳本加載標(biāo)簽啟用。

出于速度和降低服務(wù)器負(fù)載考慮,有時(shí)候我們會(huì)選擇使用 CDN 加載第三方靜態(tài)資源。對(duì)于一些熱門的第三方庫(kù),在用戶打開你的網(wǎng)頁(yè)之前就很有可能在瀏覽別的網(wǎng)站時(shí)被瀏覽器緩存下來(lái),這樣就可以極大的提升網(wǎng)頁(yè)加載速度。

然而使用 CDN 也提高了網(wǎng)站的安全風(fēng)險(xiǎn):第三方靜態(tài)資源放在第三方服務(wù)器上,CDN 的擁有者有沒有可能偷偷的篡改這些文件,加入惡意代碼呢?或者 CDN 服務(wù)器遭受了黑客攻擊,整個(gè)文件被替換掉。雖然可能性不高,但不是零。JavaScript 對(duì)于當(dāng)前瀏覽器頁(yè)面有完全控制權(quán),他們不僅僅能獲取到頁(yè)面上的任何內(nèi)容,還能抓取用戶輸入的一些諸如密碼之類的機(jī)密信息,還能獲取到保存到 Cookie 中的登錄票據(jù)等等內(nèi)容,這就是所謂的 XSS 攻擊。

我們需要一種機(jī)制確保從 CDN 下載的文件未被惡意篡改。某些下載網(wǎng)站就提供下載文件的 MD5 或 SHA1 碼用于檢查所下載文件的完整性,網(wǎng)頁(yè)中有沒有類似的機(jī)制呢?

什么是 SRI

子資源完整性 Subresource Integrity 簡(jiǎn)稱 SRI 是一種安全機(jī)制,它用于讓瀏覽器檢查所下載的來(lái)自第三方的資源(例如 CDN)未被惡意篡改。它使用哈希值檢查確保第三方資源的完整性。只要開發(fā)者提供了被需下載資源的哈希值,瀏覽器就可以檢查實(shí)際下載的文件是否與預(yù)期的哈希值匹配。

使用 SRI

只需給 scriptstyle 標(biāo)簽添加 integrity 屬性即可。例如:

JavaScript

CSS

integrity 屬性值以 shaXXX- 開頭,表示后面的哈希值使用的哈希算法,目前只允許 sha256sha384sha512 這三種哈希算法,以 sha384 比較多見。后面跟對(duì)應(yīng)的哈希值即可。

值得注意的是,因?yàn)閱⒂?SRI 需要獲取所下載文件的內(nèi)容進(jìn)行計(jì)算,所以需要 CDN 服務(wù)器啟用跨域資源訪問(CORS)支持,即返回 Access-Control-Allow-Origin: * 頭。客戶端需要使用跨域的形式加載指定文件,即添加 crossorigin="anonymous" 屬性。就我所知,目前國(guó)內(nèi)相對(duì)常用的免費(fèi) CDN bootcdn 已經(jīng)支持 CORS,百度靜態(tài) CDN 還不支持。

瀏覽器如何處理 SRI

當(dāng)瀏覽器遇到一個(gè)帶有 integrityscriptstyle 標(biāo)簽,在執(zhí)行其中的 JS 腳本或應(yīng)用其中的 CSS 樣式之前,瀏覽器會(huì)首先計(jì)算所下載文件的內(nèi)容的哈希值是否與 integrity 屬性給定的值相同。

如果計(jì)算結(jié)果與給定值不匹配,瀏覽器會(huì)拒絕執(zhí)行腳本內(nèi)容,并報(bào)出一個(gè)網(wǎng)絡(luò)錯(cuò)誤,類似如下結(jié)果:

Failed to find a valid digest in the integrity attribute for resource https://cdnjs.cloudflare.com/ajax/libs/normalize/6.0.0/normalize.min.css with computed SHA-256 integrity VbcxqgMGQYm3q8qZMd63uETHXXZkqs7ME1bEvAY1xK8=. The resource has been blocked.
如何計(jì)算哈希值

這是 SRI 標(biāo)準(zhǔn)文檔提供的例子:

$ echo -n "alert(Hello, world.);" | openssl dgst -sha384 -binary | openssl base64 -A

使用了 OpenSSL 這個(gè) *nix 中通常都包含的工具計(jì)算哈希值。其中 alert(Hello, world.); 是文件內(nèi)容,你也可以用 cat Filename.js 直接讀取某個(gè)文件。

輸出 H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO,在此基礎(chǔ)上添加前綴 sha384- 就可以了。

網(wǎng)上也有現(xiàn)成的 SRI 哈希值生成器,方便好用:https://srihash.org/

CSP 與 SRI

你可以使用 內(nèi)容安全政策 (CSP)強(qiáng)制要求當(dāng)前頁(yè)面所有腳本加載標(biāo)簽啟用 SRI。例如

Content-Security-Policy: require-sri-for script;

強(qiáng)制要求所有 script 標(biāo)簽啟用 SRI,瀏覽器會(huì)拒絕加載未啟用 SRI 的 script 標(biāo)簽。

對(duì)應(yīng)的還有 CSS 版本:

Content-Security-Policy: require-sri-for style;

你也可以同時(shí)啟用兩者。

錯(cuò)誤恢復(fù)

使用 CDN 時(shí)別忘了當(dāng)嘗試從 CDN 加載文件失敗后加載本地版本:


)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/33799.html

相關(guān)文章

  • 使用SRI保護(hù)你的網(wǎng)站免受三方CDN惡意攻擊

    摘要:它使用哈希值檢查確保第三方資源的完整性。只要開發(fā)者提供了被需下載資源的哈希值,瀏覽器就可以檢查實(shí)際下載的文件是否與預(yù)期的哈希值匹配。網(wǎng)上也有現(xiàn)成的哈希值生成器,方便好用與你可以使用內(nèi)容安全政策強(qiáng)制要求當(dāng)前頁(yè)面所有腳本加載標(biāo)簽啟用。 出于速度和降低服務(wù)器負(fù)載考慮,有時(shí)候我們會(huì)選擇使用 CDN 加載第三方靜態(tài)資源。對(duì)于一些熱門的第三方庫(kù),在用戶打開你的網(wǎng)頁(yè)之前就很有可能在瀏覽別的網(wǎng)站時(shí)被瀏...

    Me_Kun 評(píng)論0 收藏0
  • 使用SRI保護(hù)你的網(wǎng)站免受三方CDN惡意攻擊

    摘要:它使用哈希值檢查確保第三方資源的完整性。只要開發(fā)者提供了被需下載資源的哈希值,瀏覽器就可以檢查實(shí)際下載的文件是否與預(yù)期的哈希值匹配。網(wǎng)上也有現(xiàn)成的哈希值生成器,方便好用與你可以使用內(nèi)容安全政策強(qiáng)制要求當(dāng)前頁(yè)面所有腳本加載標(biāo)簽啟用。 出于速度和降低服務(wù)器負(fù)載考慮,有時(shí)候我們會(huì)選擇使用 CDN 加載第三方靜態(tài)資源。對(duì)于一些熱門的第三方庫(kù),在用戶打開你的網(wǎng)頁(yè)之前就很有可能在瀏覽別的網(wǎng)站時(shí)被瀏...

    jindong 評(píng)論0 收藏0
  • 使用SRI保護(hù)你的網(wǎng)站免受三方CDN惡意攻擊

    摘要:它使用哈希值檢查確保第三方資源的完整性。只要開發(fā)者提供了被需下載資源的哈希值,瀏覽器就可以檢查實(shí)際下載的文件是否與預(yù)期的哈希值匹配。網(wǎng)上也有現(xiàn)成的哈希值生成器,方便好用與你可以使用內(nèi)容安全政策強(qiáng)制要求當(dāng)前頁(yè)面所有腳本加載標(biāo)簽啟用。 出于速度和降低服務(wù)器負(fù)載考慮,有時(shí)候我們會(huì)選擇使用 CDN 加載第三方靜態(tài)資源。對(duì)于一些熱門的第三方庫(kù),在用戶打開你的網(wǎng)頁(yè)之前就很有可能在瀏覽別的網(wǎng)站時(shí)被瀏...

    Jason_Geng 評(píng)論0 收藏0
  • 電商安全無(wú)小事,如何有效地抵御 CSRF 攻擊

    摘要:與攻擊相比,攻擊往往很少見,因此對(duì)其進(jìn)行防范的資源也相當(dāng)稀少。不過,這種受信任的攻擊模式更加難以防范,所以被認(rèn)為比更具危險(xiǎn)性。通過實(shí)時(shí)升級(jí)系統(tǒng)快速同步最新漏洞,避免零日攻擊。 現(xiàn)在,我們絕大多數(shù)人都會(huì)在網(wǎng)上購(gòu)物買東西。但是很多人都不清楚的是,很多電商網(wǎng)站會(huì)存在安全漏洞。比如烏云就通報(bào)過,國(guó)內(nèi)很多家公司的網(wǎng)站都存在 CSRF 漏洞。如果某個(gè)網(wǎng)站存在這種安全漏洞的話,那么我們?cè)谫?gòu)物的過程中...

    趙連江 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<