1. 程式人生 > >X-Frame-Options 響應頭配置避免點選劫持攻擊

X-Frame-Options 響應頭配置避免點選劫持攻擊

X-Frame-Options HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在 <frame><iframe> 或者 <object>中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點選劫持 (clickjacking) 的攻擊。

X-Frame-Options有三種可配置值
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://example.com/

DENY
表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中巢狀也不允許。
SAMEORIGIN


表示該頁面可以在相同域名頁面的 frame 中展示。
ALLOW-FROM uri
表示該頁面可以在指定來源的 frame 中展示。
注: 在網頁中設定meta標籤是無用的!例如,<meta http-equiv="X-Frame-Options" content="deny"> 是沒有效果的。不要使用這種方式。需要在下面的配置例項中配置HTTP Header的方式來進行配置,X-Frame-Options才會起作用。

配置例項

配置 Apache

Windows平臺是在httpd.conf裡面新增下面配置;如果是ubuntu是在/etc/apache2/sites-available

下面對應的*.conf檔案進行配置


配置 Apache 在所有頁面上傳送 X-Frame-Options 響應頭,需要把下面這行新增到 'site' 的配置中:

Header always append X-Frame-Options SAMEORIGIN

配置Apache X-Frame-Options deny , 需要把下面這行新增到 'site' 的配置中:

Header set X-Frame-Options DENY

配置Apache X-Frame-Options 設定 ALLOW-FROM 為一個指定的主機,需要把下面這行新增到 'site' 的配置中:

Header set X-Frame-Options "ALLOW-FROM https://example.com/"

配置好後,可能重啟Apache2失敗,原因是沒有安裝headers模組,進入到
/etc/apache2/mods-available目錄,可以看到


執行命令:# a2enmod headers 即可安裝headers模組,安裝後可以在/etc/apache2/mods-enabled目錄下看到headers模組可用


安裝headers模組成功後,再次執行service apache2 restart即可重新啟動apache

配置 nginx

配置 nginx 傳送X-Frame-Options響應頭,需要把下面這行新增到 'http', 'server' 或者 'location' 的配置中:

add_header X-Frame-Options SAMEORIGIN;

配置 IIS

配置 IIS 傳送 X-Frame-Options 響應頭,新增下面的配置到 Web.config 檔案中:

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

配置 HAProxy

配置 HAProxy 傳送 X-Frame-Options響應頭, 新增下面這行到 front-end, listen, or backend 配置中:

rspadd  X-Frame-Options:\ SAMEORIGIN