X-Frame-Options,防止IFrame式Clickjacking攻擊
X-Frame-Options 用來防止 IFrame 中的 Clickjacking 攻擊來源:https://a42033.gitbooks.io/syste ... _Frame_Options.html
其實有新規格 CSP(Content Security Policy)來防護,但因為有些瀏覽器還不支援,所以才會繼續使用X-Frame-Options為主。
若是為了安全掃描、弱點掃描 軟體的結果改善,其實很簡單,往下翻照 IIS 或 Apache 或 nginx 之類的 組態檔加幾行就可以。
IIS 改 web.config 文字檔 或 IIS 圖形介面都可以設定。
防止 釣魚網站 透過 iframe的方式 嵌入自己的網站來偽造混淆。
通常釣魚網站的作法是在 iframe 上面埋一個隱形的DIV區塊來欺騙使用者。
限制符合同源政策的網頁才能用IFrame、Frame或Object內嵌這個網頁,這是瀏覽器的安全防護特性之一,可以避免被味精同意的其他人用 iFrame 方式嵌入網頁。
能夠防止網頁被其他人亂內嵌,就能有效達到防止IFrame式Clickjacking攻擊
(註:點擊刧持還有其他形式,本文只聚焦透過IFrame攻擊的手法),
避免惡意網頁將你的網頁疊加在一般按鈕或連結上方誘使使用者點擊,不知不覺完成開放權限、身份確認… 等操作。
隨便調查一下,發現不只Google,像Facebook、Twitter、Yahoo這些大網站也紛紛在HTTP Header加入X-Frame-Options: DENY或SAMEORIGIN。
釣魚網站的做法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
body {
background-color: #0094ff;
}
button {
background-color: red;
color: yellow;
}
</style>
</head>
<body>
<button>我是豬頭</button>
</body>
</html>
某駭客黑大發現此網頁未加X-Frame-Options: DENY或SAMEORIGIN防護,心懷不軌搞了個陷阱網頁:先用IFrame內嵌豬頭偵測網頁,利用CSS技巧將IFrame設成position: absolute並調整位置,將「我是豬頭」按鈕蓋在「我是帥哥」按鈕的正上方,再調整CSS opacity透明度使之完全隱形(可參考影片裡的動畫示意)。
使用者只看到「我是帥哥」,按下去一秒變豬頭:
https://a42033.gitbooks.io/system/content/img/security/x_frame_options_3.gif
如何檢查
使用Chrome
1. F12打開Network
2. 點選「Doc」尋找該網址的主要Document
3. 點了後會出現詳細清單,選取「Header」
4. 尋找「X-Frame-Options」
https://a42033.gitbooks.io/system/content/img/security/x_frame_options_1.png
如何防止
如果希望整個網站都不准其他網頁內嵌,可以設定網站伺服器在Header中預設加入X-Frame-Options。
IIS的方法
在Header中設定
以IIS為例,可在HTTP回應標頭加入設定,或者使用web.config
https://a42033.gitbooks.io/system/content/img/security/x_frame_options_4.gif
也可以直接改 web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
Apache的方式
請加入以下指令到網站組態設定檔:
Header always append X-Frame-Options SAMEORIGIN
nginx也是改組態檔
請加入以下指令到 http, server 或 location 組態設定檔:
add_header X-Frame-Options SAMEORIGIN;
HAProxy 組態檔
請加入以下指令到 frontend, listen, 或 backend 組態設定檔:
rspadd X-Frame-Options:\ SAMEORIGIN
X-Frame-Options
參數說明:
DENY
表示文件無論如何都不能被嵌入到 frame 中,即使是自家網站也不行。
SAMEORIGIN
唯有當符合同源政策下,才能被嵌入到 frame 中。
ALLOW-FROM uri
唯有列表許可的 URI 才能嵌入到 frame 中。
新的規則: CSP , frame-ancestors
針對Cross Site Scripting這類攻擊,網頁安全有個新規格-CSP(Content Security Policy),其中定義了 frame-ancestors 可取代 X-Frame-Options
但因為很多瀏覽器還不支援,現階段要防範網頁被內嵌仍是以 X-Frame-Options 為主。
頁:
[1]