網站中的 Security Headers 安全設定
當使用者通過瀏覽器發送request到伺服器上,伺服器會回應response給瀏覽器,此時就會帶上一些header,其中有些header可以保證網站安全。
主要的Security Headers設定:
X-Frame-Options
告訴瀏覽器您是否要允許您的網站被嵌入(iFrame)。通過防止瀏覽器構架您的網站,您可以防禦諸如Click Jacking之類的攻擊。
設定方式:
- 開啟 mod headers
在\apache\apacheXXX\conf中,編輯httpd.conf
將LoadModule headers_module modules/mod_headers.so前的註解取消掉 - 在\etc\apache2\conf-available中,編輯security.conf
將Header set X-Frame-Options: "sameorigin" 前的註解取消掉 - 重啟Apache
Strict-Transport-Security
簡稱 HSTS,告知瀏覽器強制啟用 https , max-age 代表強制維持 https 多少時間,一般為一年31536000秒,includeSubDomains包含子網域。
在\etc\apache2\conf-available中,編輯security.conf,加入
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"
或是編輯htaccess
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
Content-Security-Policy
為了防止 XSS , CSP 可以設定來源白名單,只讓信任的來源執行腳本,self 代表讓網站的所有資源都來自於自己。
在\etc\apache2\conf-available中,編輯security.conf,加入
Header set Content-Security-Policy "frame-ancestors 'self';"
X-Content-Type-Options
阻止瀏覽器探知檔案的 mime type ( disable Content sniffing ),一般情況下瀏覽器會去探知資源的 Content-Type ,以判別資源類型,例如:image/png、text/css,而有些資源的 Content-Type 有可能是錯誤或缺少的,此時就會進行 Content sniffing猜測解析內容,將 X-Content-Type-Options 設成 nosniff,可阻止這種行為。
在\etc\apache2\conf-available中,編輯security.conf,加入
Header set X-Content-Type-Options: "nosniff"
Referrer-Policy
referrer是訪問來源網址,會將使用者從哪個網站來的資訊帶到 request 的header。
在\etc\apache2\conf-available中,編輯security.conf,加入
Header set Referrer-Policy "strict-origin-when-cross-origin"
Permissions-Policy
允許一個站點開啟或者禁止一些瀏覽器屬性和 API,來更好的確保站點的安全性和隱私性。有點類似內容安全策略,但是它控制的是瀏覽器的特徵而不是安全行為
在\etc\apache2\conf-available中,編輯security.conf,加入
Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"
X-Permitted-Cross-Domain-Policies
該標頭用於限制哪些數據外部資源(例如Adobe Flash和PDF文檔)可以在域上訪問。未能將X-Permitted-跨域 - 核心標題設置為“無”值,允許其他域將應用程序的數據嵌入其內容中。
Header Set X-Permitted-Cross-Domain-Policies "none"
Clear-Site-Data
透明SITE-DATA標頭為應用程序開發人員提供功能,以控制哪些數據持續存儲在瀏覽器的各個存儲位置(Cookie,Storage API,CACHE)中。這對於Web開發人員可能很有用,因為他們可以指示瀏覽器在註銷過程中刪除瀏覽器存儲在客戶端(例如cookie,caches和存儲)上的敏感信息。注意:僅在安全上下文(HTTPS)中支持這。
Header Set Clear-Site-Data: "*"
Cross-Origin-Embedder-Policy
可以利用交叉原始物體 - embedder-Policy(COEP)標頭來防止Web瀏覽器從第三方域中加載資源,這些域未使用交叉源源物 - 資源 - 資源 - 託管標頭明確授予許可。
Header Set Cross-Origin-Embedder-Policy "require-corp"
Cross-Origin-Opener-Policy
交叉啟動 - 開花 - POLICY(COOP)標頭用於在Web瀏覽器中分離跨原始瀏覽上下文。瀏覽上下文是瀏覽器向用戶顯示文檔對象的環境,例如,選項卡,窗口或iframe。該標頭用於防止一組特定的交叉攻擊,稱為XS-Leaks。
Header Set Cross-Origin-Opener-Policy "same-origin"
Cross-Origin-Resource-Policy
開發人員使用了跨源性資源 - 庫利(Corp)標頭來定義用戶的瀏覽器是否能夠從其他來源向應用程序或Web服務提出請求。標題用於防止側向通道和跨站點腳本包含攻擊。
Header Set Cross-Origin-Resource-Policy "same-origin"
Security Headers掃描網站:https://securityheaders.com/
參考:
發表評論
想要留言嗎?歡迎歡迎!