日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
為什么你的網(wǎng)頁需要CSP?

內(nèi)容安全策略(CSP)是一個(gè) HTTP Header,CSP 通過告訴瀏覽器一系列規(guī)則,嚴(yán)格規(guī)定頁面中哪些資源允許有哪些來源, 不在指定范圍內(nèi)的統(tǒng)統(tǒng)拒絕。

使用它是防止跨站點(diǎn)腳本(XSS)漏洞的最佳方法。由于難以使用 CSP 對(duì)現(xiàn)有網(wǎng)站進(jìn)行改造(可通過漸進(jìn)式的方法),因此 CSP 對(duì)于所有新網(wǎng)站都是強(qiáng)制性的,強(qiáng)烈建議對(duì)所有現(xiàn)有高風(fēng)險(xiǎn)站點(diǎn)進(jìn)行 CSP 策略配置。

為什么要配置

CSP 的主要好處就是可以全面禁止使用不安全的嵌入式 JavaScript。內(nèi)聯(lián) JavaScript(無論是反射的還是存儲(chǔ)的),意味著不正確的轉(zhuǎn)義用戶輸入都可以被 Web 瀏覽器解釋為 JavaScript 代碼。通過使用 CSP 禁用嵌入式 JavaScript,你可以有效消除針對(duì)你站點(diǎn)的幾乎所有 XSS 攻擊。

注意,禁用內(nèi)聯(lián) JavaScript 意味著必須從 src 標(biāo)記加載所有 JavaScript   

頁面 HTTP 響應(yīng)頭的 Content-Security-Policy配置中包含相同的加密串:

 
 
 
 
  1. Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa' 

配置示例

示例 1

所有內(nèi)容均來自站點(diǎn)的同一個(gè)源 (不包括其子域名)

Content-Security-Policy: default-src 'self'

示例 2

允許內(nèi)容來自信任的域名及其子域名 (域名不必須與CSP設(shè)置所在的域名相同)

Content-Security-Policy: default-src 'self' *.trusted.com

示例 3

允許網(wǎng)頁應(yīng)用的用戶在他們自己的內(nèi)容中包含來自任何源的圖片, 但是限制音頻或視頻需從信任的資源提供者(獲得),所有腳本必須從特定主機(jī)服務(wù)器獲取可信的代碼.

Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com

在這里,各種內(nèi)容默認(rèn)僅允許從文檔所在的源獲取, 但存在如下例外:

  •  圖片可以從任何地方加載(注意 "*" 通配符)。
  •  多媒體文件僅允許從 media1.com 和 media2.com 加載(不允許從這些站點(diǎn)的子域名)。
  •  可運(yùn)行腳本僅允許來自于userscripts.example.com。

示例 4

一個(gè)線上銀行網(wǎng)站的管理者想要確保網(wǎng)站的所有內(nèi)容都要通過SSL方式獲取,以避免攻擊者竊聽用戶發(fā)出的請(qǐng)求。

Content-Security-Policy: default-src https://onlinebanking.jumbobank.com

該服務(wù)器僅允許通過HTTPS方式并僅從onlinebanking.jumbobank.com域名來訪問文檔。

示例 5

一個(gè)在線郵箱的管理者想要允許在郵件里包含HTML,同樣圖片允許從任何地方加載,但不允許JavaScript或者其他潛在的危險(xiǎn)內(nèi)容(從任意位置加載)。

Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *

注意這個(gè)示例并未指定script-src。在此CSP示例中,站點(diǎn)通過 default-src 指令的對(duì)其進(jìn)行配置,這也同樣意味著腳本文件僅允許從原始服務(wù)器獲取。

上報(bào)你的數(shù)據(jù)

當(dāng)檢測(cè)到非法資源時(shí),除了控制臺(tái)看到的報(bào)錯(cuò)信息,也可以讓瀏覽器將日志發(fā)送到服務(wù)器以供后續(xù)分析使用。接收?qǐng)?bào)告的地址可在 Content-Security-Policy 響應(yīng)頭中通過 report-uri指令來配置。當(dāng)然,服務(wù)端需要編寫相應(yīng)的服務(wù)來接收該數(shù)據(jù)。

配置 report-uri

 
 
 
 
  1. Content-Security-Policy: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser;` 

服務(wù)端收到請(qǐng)求:

 
 
 
 
  1. {  
  2.   "csp-report": {  
  3.     "document-uri": "http://example.org/page.html",  
  4.     "referrer": "http://evil.example.com/",  
  5.     "blocked-uri": "http://evil.example.com/evil.js",  
  6.     "violated-directive": "script-src 'self' https://apis.google.com",  
  7.     "original-policy": "script-src 'self' https://apis.google.com; report-uri http://example.org/my_amazing_csp_report_parser"  
  8.   }  

Report Only

CSP 提供了一種報(bào)告模式,該模式下資源不會(huì)真的被限制加載,只會(huì)對(duì)檢測(cè)到的問題進(jìn)行上報(bào) ,以 JSON 數(shù)據(jù)的形式發(fā)送到 report-uri 指定的地方。

通過指定 Content-Security-Policy-Report-Only 而不是 Content-Security-Policy,則開啟了報(bào)告模式。

 
 
 
 
  1. Content-Security-Policy-Report-Only: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser; 

當(dāng)然,你也可以同時(shí)指定兩種響應(yīng)頭,各自里的規(guī)則還會(huì)正常執(zhí)行,不會(huì)互相影響。比如:

 
 
 
 
  1. Content-Security-Policy: img-src *;  
  2. Content-Security-Policy-Report-Only: img-src ‘none’; report-uri http://reportcollector.example.com/collector.cgi 

這里圖片還是會(huì)正常加載,但是 img-src ‘none’ 也會(huì)檢測(cè)到并且發(fā)送報(bào)告。

報(bào)告模式對(duì)于測(cè)試非常有用。在開啟 CSP 之前肯定需要對(duì)整站做全面的測(cè)試,將發(fā)現(xiàn)的問題及時(shí)修復(fù)后再真正開啟,比如上面提到的對(duì)內(nèi)聯(lián)代碼的改造。

如何檢驗(yàn)配置成功了?

在Network中可以看到配置成功的header:

下面是 Twitter 的一個(gè)配置示例,非常完善:

在控制臺(tái)可以看到資源 block 報(bào)錯(cuò):

Network中可以看到Block資源上報(bào):


網(wǎng)頁名稱:為什么你的網(wǎng)頁需要CSP?
網(wǎng)站鏈接:http://www.dlmjj.cn/article/cdiddgh.html