11個網站安全防護的 http Header 設定

11個網站安全防護的 http Header 設定

這篇文章主要介紹 11個網站安全防護的 http Header

只要透過網站的設定,安全設定值加入到 http header 中,不需大幅度的修改程式,

就可以讓網站與使用者瀏覽器之間有更多的安全防護,因此這個方法是比較簡便可以達成。

缺點就是這些 Http Header 在比較舊版本的瀏覽器有些是不支援的。

http Header 用途
HSTS 強制將網站與瀏覽器間的傳輸轉為 HTTPS例如:這個例子,強制 HTTPS轉換,有效期間為一年

 Strict-Transport-Security: max-age=31536000

缺點是IE12之後才有支援。
X-Frame-Options 主要用來防止 “Clickjacking” 的攻擊。駭客可能巧妙的假照一個遊戲網站,讓使用者點擊輸入相關資訊,但是該遊戲網站的背後卻是真實的銀行網站。透過 UI 多層重疊的方式,誘導使用者誤以為是遊戲網站。

 

範例:

Content-Security-Policy: frame-ancestors 'none'
Microsoft XSS Filter Microsoft IE8 中提供的防護。可以避免惡意的 XSS JavaScript 程式碼的執行範例:X-XSS-Protection: 0
X-Content-Type-

Options

主要避免讀取未知或是假造的 MIME 資料類型。範例:X-Content-Type-Options: nosniff

IE 不會任意執行 CSS  除非MIME 型態為text/css

 

CSP

Content-
Security-
Policy
為了避免 XSS attack 我們做許多防護措施。相對的,針對白名單,允許執行的 JavaScript ,就可以透過CSP來設定。

例如這個範例,允許 self (目前網頁)與 apis.google.com的 JavaScript 執行。

範例:Content-Security-Policy: script-src 'self' https://apis.google.com

 

HttpOnly 我們都知道 cookie 可能存放登入之後一些 session 相關的資訊。因此,HttpOnly 可以避免 cookie被惡性JavaScript 讀取。

 

範例

Set-Cookie: <name>=<value>[; <Max-Age>=<age>]
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; HttpOnly]
Secure Cookie 針對 cookie在網路上的傳輸,Secure Cookie 限定僅有在 HTTPS 的情況下才會傳輸Cookie 資料。如果是 HTTP 的情況下,Cookie 就不會被傳送。
Cache Control 快取的設定。考量在於有些敏感性的資料,我們希望快曲的時間不要過長,並且有一定 timeout與 expire的機制。例如 apache 網站的設定。

    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Cache-Control "max-age=290304000, public"
    </FilesMatch>
Access Control Allow Origin 定義跨 domain 執行 JavaScript 的方式。

當要存取的資料(Adobe Flash Player) 需要跨 domain 的時候,就用這個方式定義。
Content-type 主要用在定義最終瀏覽器如何呈現的字元集。
範例Character encodings

  • Content-Type: text/html; charset=utf-8

11 個 Http Header 技術參考資料

1) HTTP Strict Transport Security (HSTS)

2) X-Frame-Options

3) Microsoft’s XSS Filter

4) X-Content-Type Options

5) CSP – Content Security Policy

6) HttpOnly Cookies*

7) Secure Cookies*

8) Cache-Control

9) Access Control Allow Origin

10) Cross Domain Meta Policy

11) Content-Type

Leave a Reply

Your email address will not be published. Required fields are marked *