原文地址:Web 漏洞分析與防護之點擊劫持(三)
博客地址:http://www.extlight.comjavascript
點擊劫持,顧名思義,用戶點擊某個按鈕,卻觸發了不是用戶真正意願的事件。html
用戶在登錄 A 網站的系統後,被攻擊者誘惑打開第三方網站,而第三方網站經過 iframe 引入了 A 網站的頁面內容,用戶在第三方網站中點擊某個按鈕(被裝飾的按鈕),其實是點擊了 A 網站的按鈕。java
演示圖以下:瀏覽器
用戶登陸論壇系統後,被攻擊者誘騙點擊第三方網站,並在第三方網站中點擊某個按鈕(鼠標無法錄製),結果卻觸發了論壇系統的發言請求。工具
咱們xian 查看「點擊劫持.html」文件的源碼:網站
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>點擊劫持</title> </head> <body style="background: url(bg.jpg) no-repeat;"> <iframe style="opacity: 0" src="http://localhost:8080/article/articleList" width="740" height="460"></iframe> </body> </html>
bg.jpg 就是顯示美女字樣的圖片,頁面使用 iframe 元素引用論壇系統的文章界面,將 iframe 透明化。url
咱們經過瀏覽器調試工具查看該頁面的元素,修改 iframe 的 opacity 爲 0.5 ,結果以下:調試
從上圖可知,攻擊者經過圖片做爲頁面背景,隱藏了用戶操做的真實界面,從而使用戶在點擊第三方網站的按鈕時,其實是觸發了論壇系統的發表按鈕。code
從上文介紹的內容可知,點擊劫持攻擊的前提是第三方網站使用 iframe 引入目標網站的頁面,咱們禁止目標網站被嵌套便可。orm
在目標網站頁面添加以下代碼:
<script> if (top.location != window.location) { top.location = window.location; } </script>
當第三方頁面引用目標網站後,會自動跳回到目標網站。
缺點:iframe 使用 sandbox="allow-forms" 時防護就失效。
X-Frame-Options HTTP 響應頭是用來給瀏覽器指示容許一個頁面能否在 <frame> 或者 <object> 中展示的標記。(推薦使用)
因爲點擊劫持只須要用戶簡單的點擊按鈕就觸發事件,咱們能夠增長用戶的操做成本,從而讓用戶有所警覺。如:設置驗證碼等。