日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web安全(3)-- ClickJacking(点击劫持)

發(fā)布時間:2023/12/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web安全(3)-- ClickJacking(点击劫持) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“Clickjacking(點擊劫持)是由互聯(lián)網安全專家羅伯特·漢森和耶利米·格勞斯曼在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 busting

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

frame busting是指利用js判斷l(xiāng)ocation以防止網頁被別人iframe內嵌的一個實現 。

<script> if(top!=window){top.location=window.location } </script>

但是可以通過onbeforeunload事件來阻止這種跳轉。

<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 響應頭,可以指示瀏覽器是否應該加載一個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.3.5 結果

在 Firefox 嘗試加載 frame 的內容時,如果 X-Frame-Options 響應頭設置為禁止訪問了,那么 Firefox 會用 about:blank 展現到 frame 中。也許從某種方面來講的話,展示為錯誤消息會更好一點。

1.4 瀏覽器兼容性

桌面瀏覽器:

特性ChromeFirefox (Gecko)Internet ExplorerOperaSafari特性AndroidChrome Android 版Firefox 移動版 (Gecko)IE 移動版Opera 移動版Safari 移動版
基礎支持4.1.249.10423.6.9 (1.9.2.9)8.010.54.0
ALLOW-FROM 支持Not supported18.0 (18.0) bug 6901688.0??Not supported WebKit bug 94836
基礎支持??????

參考:http://www.cnblogs.com/xuanhun/p/3610981.html?utm_source=tuicool&utm_medium=referral

?

總結

以上是生活随笔為你收集整理的web安全(3)-- ClickJacking(点击劫持)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。