web安全(3)-- ClickJacking(点击劫持)
“Clickjacking(點(diǎn)擊劫持)是由互聯(lián)網(wǎng)安全專(zhuān)家羅伯特·漢森和耶利米·格勞斯曼在2008年提出的。是一種視覺(jué)欺騙手段,在web端就是iframe嵌套一個(gè)透明不可見(jiàn)的頁(yè)面,讓用戶(hù)在不知情的情況下,點(diǎn)擊攻擊者想要欺騙用戶(hù)點(diǎn)擊的位置。”
假設(shè)你訪(fǎng)問(wèn)一個(gè)web站點(diǎn)并看到如下的頁(yè)面:
免費(fèi)的午餐誰(shuí)都喜歡,當(dāng)你滿(mǎn)懷期待的點(diǎn)擊按鈕“WIN”的時(shí)候,恭喜你,你已經(jīng)被點(diǎn)擊劫持了。你實(shí)際點(diǎn)擊的鏈接如下:
這是登錄網(wǎng)上銀行之后的一個(gè)轉(zhuǎn)賬鏈接,轉(zhuǎn)移你的全部資產(chǎn)給Kim Dotcom先生。但是你根本你沒(méi)有看到這個(gè)頁(yè)面,像做夢(mèng)一樣。這只是一個(gè)簡(jiǎn)單的示例,實(shí)現(xiàn)上在網(wǎng)上銀行轉(zhuǎn)賬不會(huì)這么簡(jiǎn)單,但是卻告訴我們一個(gè)道理,訪(fǎng)問(wèn)網(wǎng)頁(yè)和看魔術(shù)表演一樣,看到的不一定都是真的。
下面我們具體討論下點(diǎn)擊劫持的內(nèi)部機(jī)制,和防御措施。
1.1點(diǎn)擊劫持(clickjacking attacks)
點(diǎn)擊劫持的表象一般是用戶(hù)點(diǎn)擊了頁(yè)面的A元素,但是實(shí)際上接收點(diǎn)擊事件的卻是另外一個(gè)元素。
現(xiàn)在改變下頁(yè)面內(nèi)個(gè)元素的透明度,再來(lái)看下剛才的頁(yè)面。
我們可以看到,在ipad頁(yè)面是上部還有個(gè)層,實(shí)際上是一個(gè)iframe,現(xiàn)在的透明度為50%,實(shí)際的頁(yè)面中它的透明度為0%,雖然被隱藏不可見(jiàn),但是隨時(shí)都可以被激活。
在?Firefox的3D視圖下,觀察這個(gè)頁(yè)面更明顯。
被隱藏的iframe在IPAD頁(yè)面的上部,同時(shí)轉(zhuǎn)款的鏈接正好在“WIN”的上方,因?yàn)樵O(shè)置了透明度,用戶(hù)只能看到“WIN”,但實(shí)際點(diǎn)擊的是轉(zhuǎn)款。
攻擊者的頁(yè)面內(nèi)容可能是這樣的:
<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>代碼就是這么簡(jiǎn)單,下面我們觀察一下點(diǎn)擊“WIN”時(shí)實(shí)際上點(diǎn)擊“轉(zhuǎn)款”鏈接時(shí)的http請(qǐng)求信息。
從圖中標(biāo)記的地方,可以看到請(qǐng)求的實(shí)際地址和身份驗(yàn)證的cookie信息。當(dāng)然這樣的攻擊能成功,在于用戶(hù)已經(jīng)登錄的網(wǎng)上銀行。這樣的攻擊行為和跨站請(qǐng)求偽造很類(lèi)似。
下面我們討論下針對(duì)點(diǎn)擊劫持的基本防御方法。
1.2 Frame busting
這是在頁(yè)面上通過(guò)腳本(JS)來(lái)防止點(diǎn)擊劫持或者iframe惡意請(qǐng)求的方式,本文不做介紹,詳見(jiàn)http://seclab.stanford.edu/websec/framebusting/framebust.pdf,烏云有篇類(lèi)似的中文文章共參考http://drops.wooyun.org/papers/104。
frame busting是指利用js判斷l(xiāng)ocation以防止網(wǎng)頁(yè)被別人iframe內(nèi)嵌的一個(gè)實(shí)現(xiàn) 。
<script> if(top!=window){top.location=window.location } </script>但是可以通過(guò)onbeforeunload事件來(lái)阻止這種跳轉(zhuǎn)。
<script> window.οnbefοreunlοad=function(){window.onbeforeunload = null;return "Maybe you want to leave the page, before you become rich?" } </script>參考:http://javascript.info/tutorial/clickjacking
1.3 The X-Frame-Options
X-Frame-Options HTTP 響應(yīng)頭,可以指示瀏覽器是否應(yīng)該加載一個(gè)iframe中的頁(yè)面。網(wǎng)站可以通過(guò)設(shè)置X-Frame-Options阻止站點(diǎn)內(nèi)的頁(yè)面被其他頁(yè)面嵌入從而防止點(diǎn)擊劫持。
1.3.1 X-Frame-Options
X-Frame-Options共有三個(gè)值:
DENY
任何頁(yè)面都不能被嵌入到iframe或者frame中。
SAMEORIGIN
頁(yè)面只能被本站頁(yè)面嵌入到iframe或者frame中。
ALLOW-FROM Uri
頁(yè)面自能被指定的Uri嵌入到iframe或frame中。
1.3.2 Apache配置X-Frame-Options
在站點(diǎn)配置文件httpd.conf中添加如下配置,限制只有站點(diǎn)內(nèi)的頁(yè)面才可以嵌入iframe。
Header always append X-Frame-Options SAMEORIGIN
配置之后重啟apache使其生效。該配置方式對(duì)IBM HTTP Server同樣適用。
如果同一apache服務(wù)器上有多個(gè)站點(diǎn),只想針對(duì)一個(gè)站點(diǎn)進(jìn)行配置,可以修改.htaccess文件,添加如下內(nèi)容:
Header append X-FRAME-OPTIONS "SAMEORIGIN"
1.3.3 Nginx 配置X-Frame-Options
到?nginx/conf文件夾下,修改nginx.conf?,添加如下內(nèi)容:
add_header X-Frame-Options "SAMEORIGIN";
重啟Nginx服務(wù)。
1.3.4 IIS配置X-Frame-Options
在web站點(diǎn)的web.config中配置:
<system.webServer>...<httpProtocol><customHeaders><add name="X-Frame-Options" value="SAMEORIGIN" /></customHeaders></httpProtocol>... </system.webServer>1.3.5 結(jié)果
在 Firefox 嘗試加載 frame 的內(nèi)容時(shí),如果 X-Frame-Options 響應(yīng)頭設(shè)置為禁止訪(fǎng)問(wèn)了,那么 Firefox 會(huì)用 about:blank 展現(xiàn)到 frame 中。也許從某種方面來(lái)講的話(huà),展示為錯(cuò)誤消息會(huì)更好一點(diǎn)。
1.4 瀏覽器兼容性
桌面瀏覽器:
| 基礎(chǔ)支持 | 4.1.249.1042 | 3.6.9 (1.9.2.9) | 8.0 | 10.5 | 4.0 | |
| ALLOW-FROM 支持 | Not supported | 18.0 (18.0) bug 690168 | 8.0? | ? | Not supported WebKit bug 94836 | |
| 基礎(chǔ)支持 | ? | ? | ? | ? | ? | ? |
參考:http://www.cnblogs.com/xuanhun/p/3610981.html?utm_source=tuicool&utm_medium=referral
?
總結(jié)
以上是生活随笔為你收集整理的web安全(3)-- ClickJacking(点击劫持)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 文献管理软件比较
- 下一篇: 南京大学计算机化学会,南京大学理论与计算