點擊劫持(CLICKJACKING)與X-FRAME-OPTIONS HEADER

轉載: http://www.tuicool.com/articles/mqUBfahtml

目錄nginx

前言web

1.1 點擊劫持(clickjacking attacks)apache

1.2  Frame Bursters. 瀏覽器

1.3 The X-Frame-Options. 安全

1.3.1 X-Frame-Options. 服務器

1.3.2 Apache配置X-Frame-Options. cookie

1.3.3 Nginx 配置X-Frame-Options. app

1.3.4 IIS配置X-Frame-Options. 網站

1.4 瀏覽器兼容性... 

前言

Clickjacking (點擊劫持)是由互聯網安全專家羅伯特·漢森和耶利米·格勞斯曼在 2008 年提出的。

是一種視覺欺騙手段,在 web 端就是 iframe 嵌套一個透明不可見的頁面,讓用戶在不知情的狀況下,點擊攻擊者想要欺騙用戶點擊的位置。」

假設你訪問一個 web 站點並看到以下的頁面:

免費的午飯誰都喜歡,當你滿懷期待的點擊按鈕「 WIN 」的時候,恭喜你,你已經被點擊劫持了。你實際點擊的連接以下:

這是登陸網上銀行以後的一個轉帳連接,轉移你的所有資產給 Kim Dotcom 先生。可是你根本你沒有看到這個頁面,像作夢同樣。這只是一個簡單的示例,實現上在網上銀行轉帳不會這麼簡單,可是卻告訴咱們一個道理,訪問網頁和看魔術表演同樣,看到的不必定都是真的。

下面咱們具體討論下點擊劫持的內部機制,和防護措施。

1.1 點擊劫持( clickjacking attacks )

點擊劫持的表象通常是用戶點擊了頁面的 A 元素,可是實際上接收點擊事件的倒是另一個元素。

如今改變下頁面內個元素的透明度,再來看下剛纔的頁面。

咱們能夠看到,在 ipad 頁面是上部還有個層,其實是一個 iframe ,如今的透明度爲 50% ,實際的頁面中它的透明度爲 0% ,雖然被隱藏不可見,可是隨時均可以被激活。

  Firefox 的 3D 視圖下,觀察這個頁面更明顯。

被隱藏的 iframe 在 IPAD 頁面的上部,同時轉款的連接正好在「 WIN 」的上方,由於設置了透明度,用戶只能看到「 WIN 」,但實際點擊的是轉款。

攻擊者的頁面內容多是這樣的:

< div style =" position : absolute ; left : 10px ; top : 10px ; "> Hey - we're giving away iPad minis!!! Just click the WIN button and it's yours!!! </ div >

< div style =" position : absolute ; left : 200px ; top : 50px ; ">

  < img src ="http://images.apple.com/my/ipad-mini/overview/images/hero.jpg" width ="250">
</ div >

< div style =" position : absolute ; left : 10px ; top : 101px ; color : red ; font-weight : bold ; "> >> WIN << </ div >

< iframe style =" opacity : 0 ; " height ="545" width ="680" scrolling ="no" src ="http://mybank/Transfer.aspx"></ iframe >

代碼就是這麼簡單,下面咱們觀察一下點擊「 WIN 」時實際上點擊「轉款」連接時的 http 請求信息。

從圖中標記的地方,能夠看到請求的實際地址和身份驗證的 cookie 信息。固然這樣的攻擊能成功,在於用戶已經登陸的網上銀行。這樣的攻擊行爲和 請求 僞造 很相似。

下面咱們討論下針對點擊劫持的基本防護方法。

1.2  Frame Bursters

這是在頁面上經過腳原本防止點擊劫持或者 iframe 惡意請求的方式,本文不作介紹,詳見 http://seclab.stanford.edu/websec/framebusting/framebust.pdf ,烏雲有篇相似的中文文章共參考 http://drops.wooyun.org/papers/104

1.3 The X-Frame-Options

X-Frame-Options HTTP 響應頭,能夠指示瀏覽器是否應該加載一個 iframe 中的頁面。網站能夠經過設置 X-Frame-Options 阻止站點內的頁面被其餘頁面嵌入從而防止點擊劫持。

1.3.1 X-Frame-Options

X-Frame-Options 共有三個值:

DENY

任何頁面都不能被嵌入到 iframe 或者 frame 中。

SAMEORIGIN

頁面只能被本站頁面嵌入到 iframe 或者 frame 中。

ALLOW-FROM  uri

頁面自能被指定的 Uri 嵌入到 iframe 或 frame 中。

1.3.2 Apache 配置 X-Frame-Options

在站點配置文件 httpd.conf 中添加以下配置,限制只有站點內的頁面才能夠嵌入 iframe 。

Header always append X-Frame-Options SAMEORIGIN

配置以後重啓 apache 使其生效。該配置方式對 IBM HTTP Server 一樣適用。

若是同一 apache 服務器上有多個站點,只想針對一個站點進行配置,能夠修改 .htaccess 文件,添加以下內容:

Header append X-FRAME-OPTIONS "SAMEORIGIN"

1.3.3 Nginx 配置 X-Frame-Options

  nginx/conf 文件夾下,修改 nginx.conf   ,添加以下內容:

add_header X-Frame-Options "SAMEORIGIN";

重啓 Nginx 服務。

1.3.4 IIS 配置 X-Frame-Options

web 站點的 web.config 中配置:

<system.webServer>

  ...

  <httpProtocol>

    <customHeaders>

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

    </customHeaders>

  </httpProtocol>

  ...

</system.webServer>

1.4 瀏覽器兼容性

桌面瀏覽器:

相關文章
相關標籤/搜索