網站header設定
最近被客戶要求所以做了header的調整就整理一下紀錄,伺服器是apache,所做的調整則是在.htaccess檔案中。
用來測試header設定的網站
https://securityheaders.com/
方法
前面幾個是多數網站掃描會被當作弱點的部分,有需要就修改
Strict-Transport-Security
連線控制,基本上直接加上就好
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536001; includeSubDomains"
</IfModule>
Content-Security-Policy
設定外連網站的權限,這部分要檢查有使用到什麼服務,會比較麻煩一點,加上有在使用的網址並用空白隔開
<IfModule mod_headers.c>
Header always set Content-Security-Policy: "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: code.jquery.com/ *.googletagmanager.com/ *.google-analytics.com/ *.google.com/ *.google.com.tw/ stats.g.doubleclick.net/ *.youtube.com/ *.googleapis.com/ *.gstatic.com/ platform.welcometw.com/ www.travel.taipei/ www.taiwan.net.tw/ scontent.frmq2-1.fna.fbcdn.net/ www.miaolitravel.net/ www.hccc.gov.tw/ ;script-src 'self' 'unsafe-inline' 'unsafe-eval' code.jquery.com/ *.googletagmanager.com/ *.google-analytics.com/ *.google.com/ *.google.com.tw/ stats.g.doubleclick.net/ *.youtube.com/ *.googleapis.com/ *.gstatic.com/ platform.welcometw.com/ www.travel.taipei/ www.taiwan.net.tw/ scontent.frmq2-1.fna.fbcdn.net/ www.miaolitravel.net/ www.hccc.gov.tw/ ;script-src-elem 'self' 'unsafe-inline' 'unsafe-eval' code.jquery.com/ *.googletagmanager.com/ *.google-analytics.com/ *.google.com/ *.google.com.tw/ stats.g.doubleclick.net/ *.youtube.com/ *.googleapis.com/ *.gstatic.com/ platform.welcometw.com/ www.travel.taipei/ www.taiwan.net.tw/ scontent.frmq2-1.fna.fbcdn.net/ www.miaolitravel.net/ www.hccc.gov.tw/ ;frame-ancestors 'self';"
</IfModule>
X-Frame-Options
嵌入設定,需要根據需求改變,一般來說設為SAMEORIGIN可以滿足需求
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
以下還沒碰過被弱點掃描軟體視為弱點,設了會更好
X-Content-Type-Options
似乎可以強制以設定的mine執行檔案
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>
Permissions-Policy
可以設定網站權限,比如說不需要麥克風的話可以設定microphone=()來讓整個網站都不能使用
可設定的參數參考https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy#directives
範例
<IfModule mod_headers.c>
Header always set Permissions-Policy "geolocation=(self \"https://*.youtube.com\" \"https://youtube.com\"),camera=(),microphone=()"
</IfModule>
Referrer-Policy
來源設定,不太懂這對安全有什麼幫助
參考參數https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
多數預設值是strict-origin-when-cross-origin
<IfModule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>