
- Javascript 基礎教程
- Javascript - 首頁
- JavaScript - 路線圖
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 啟用
- JavaScript - 位置
- JavaScript - 語法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 註釋
- JavaScript - 變數
- JavaScript - let 語句
- JavaScript - 常量
- JavaScript - 資料型別
- JavaScript - 型別轉換
- JavaScript - 嚴格模式
- JavaScript - 保留關鍵字
- JavaScript 運算子
- JavaScript - 運算子
- JavaScript - 算術運算子
- JavaScript - 比較運算子
- JavaScript - 邏輯運算子
- JavaScript - 位運算子
- JavaScript - 賦值運算子
- JavaScript - 條件運算子
- JavaScript - typeof 運算子
- JavaScript - 空值合併運算子
- JavaScript - delete 運算子
- JavaScript - 逗號運算子
- JavaScript - 分組運算子
- JavaScript - yield 運算子
- JavaScript - 展開運算子
- JavaScript - 指數運算子
- JavaScript - 運算子優先順序
- JavaScript 控制流
- JavaScript - If...Else
- JavaScript - While 迴圈
- JavaScript - For 迴圈
- JavaScript - For...in
- Javascript - For...of
- JavaScript - 迴圈控制
- JavaScript - Break 語句
- JavaScript - Continue 語句
- JavaScript - Switch Case
- JavaScript - 使用者定義迭代器
- JavaScript 函式
- JavaScript - 函式
- JavaScript - 函式表示式
- JavaScript - 函式引數
- JavaScript - 預設引數
- JavaScript - Function() 建構函式
- JavaScript - 函式提升
- JavaScript - 自執行函式
- JavaScript - 箭頭函式
- JavaScript - 函式呼叫
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 閉包
- JavaScript - 變數作用域
- JavaScript - 全域性變數
- JavaScript - 智慧函式引數
- JavaScript 物件
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - Strings
- JavaScript - Arrays
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Sets
- JavaScript - WeakSet
- JavaScript - Maps
- JavaScript - WeakMap
- JavaScript - 可迭代物件
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 帶標籤的模板
- 面向物件 JavaScript
- JavaScript - 物件
- JavaScript - 類
- JavaScript - 物件屬性
- JavaScript - 物件方法
- JavaScript - 靜態方法
- JavaScript - 顯示物件
- JavaScript - 物件訪問器
- JavaScript - 物件建構函式
- JavaScript - 原生原型
- JavaScript - ES5 物件方法
- JavaScript - 封裝
- JavaScript - 繼承
- JavaScript - 抽象
- JavaScript - 多型
- JavaScript - 解構賦值
- JavaScript - 物件解構
- JavaScript - 陣列解構
- JavaScript - 巢狀解構
- JavaScript - 可選鏈
- JavaScript - 全域性物件
- JavaScript - Mixins
- JavaScript - 代理
- JavaScript 版本
- JavaScript - 歷史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 非同步
- JavaScript - 非同步
- JavaScript - 回撥函式
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任務
- JavaScript - Promise 化
- JavaScript - Promise 鏈式呼叫
- JavaScript - 定時事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 屬性
- JavaScript - 刪除 Cookie
- JavaScript 瀏覽器 BOM
- JavaScript - 瀏覽器物件模型
- JavaScript - Window 物件
- JavaScript - Document 物件
- JavaScript - Screen 物件
- JavaScript - History 物件
- JavaScript - Navigator 物件
- JavaScript - Location 物件
- JavaScript - Console 物件
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 滑鼠事件
- JavaScript - 鍵盤事件
- JavaScript - 表單事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委託
- JavaScript - 事件冒泡
- JavaScript - 事件捕獲
- JavaScript - 自定義事件
- JavaScript 錯誤處理
- JavaScript - 錯誤處理
- JavaScript - try...catch
- JavaScript - 除錯
- JavaScript - 自定義錯誤
- JavaScript - 擴充套件錯誤
- JavaScript 重要關鍵字
- JavaScript - this 關鍵字
- JavaScript - void 關鍵字
- JavaScript - new 關鍵字
- JavaScript - var 關鍵字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和屬性
- JavaScript - DOM 文件
- JavaScript - DOM 元素
- JavaScript - DOM 屬性 (Attr)
- JavaScript - DOM 表單
- JavaScript - 更改 HTML
- JavaScript - 更改 CSS
- JavaScript - DOM 動畫
- JavaScript - DOM 導航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 雜項
- JavaScript - Ajax
- JavaScript - 非同步迭代
- JavaScript - Atomics 物件
- JavaScript - rest 引數
- JavaScript - 頁面重定向
- JavaScript - 對話方塊
- JavaScript - 頁面列印
- JavaScript - 驗證
- JavaScript - 動畫
- JavaScript - 多媒體
- JavaScript - 影像對映
- JavaScript - 瀏覽器
- JavaScript - JSON
- JavaScript - 多行字串
- JavaScript - 日期格式
- JavaScript - 獲取日期方法
- JavaScript - 設定日期方法
- JavaScript - 模組
- JavaScript - 動態匯入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 淺複製
- JavaScript - 呼叫棧
- JavaScript - 引用型別
- JavaScript - IndexedDB
- JavaScript - 點選劫持攻擊
- JavaScript - 柯里化
- JavaScript - 圖形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 效能
- JavaScript - 樣式指南
JavaScript - 點選劫持攻擊
點選劫持攻擊
點選劫持是一種網路攻擊形式,攻擊者利用它欺騙使用者點選他們感知到的不同物件;這種欺騙可能導致意外操作。攻擊者透過在有效內容上覆蓋不可見的元素或框架來實現這一點,從而偽裝惡意意圖或直接操縱網頁元素的外觀。
點選劫持會導致嚴重的風險,例如未經授權的金融交易、潛在的資料洩露以及敏感資訊的洩露。點選劫持會影響使用者和網站所有者,導致法律後果、經濟損失和日益嚴重的網路安全問題。點選劫持的欺騙性性質可能會損害使用者信任,並在數字生態系統中產生深遠的影響。
免責宣告:本章內容僅供教育目的!
點選劫持是如何運作的?
覆蓋內容
攻擊者建立惡意/垃圾郵件/詐騙網站,或將惡意程式碼注入實際上是合法性質的網站。
攻擊者將不可見的元素或框架放置在頁面上的合法內容之上。這些元素可以是透明的 iframe 或其他 HTML 元素。
欺騙性呈現
然後,攻擊者誘使使用者與頁面上的可見元素互動,這些元素通常是按鈕、連結或表單。
但是,這些可見元素實際上位於不可見的惡意元素之上。
使用者互動
當用戶與可見元素互動(點選、輸入等)時,他們不知不覺地與隱藏的惡意元素互動,這些元素覆蓋在合法內容之上。
意外操作
攻擊者可以操縱隱藏的元素,代表使用者執行意外操作。這可能包括進行不必要的交易、更改帳戶設定,甚至提交敏感資訊。
使用者不知情
因為使用者認為他們正在與看到的可見元素互動,所以他們不知道自己的操作被重定向以執行惡意活動。
示例
示例 1:按鈕覆蓋
提供的 HTML 程式碼演示了一個按鈕覆蓋點選劫持示例。按鈕呈現給使用者,但實際上它覆蓋在一個隱藏的惡意 iframe 上,導致使用者進入一個可能存在危害的頁面。
home.html
<!DOCTYPE html> <html> <body> <h2>This is content of the home page</h2> <iframe src="legitimate-site.html" width="100%" height="100%"></iframe> <div> <button onclick="window.location.href='malicious-site.html'">Click Me</button> </div> </body> </html>
legitimate-site.html
<!DOCTYPE html> <html> <body> <header> <h1>Welcome to Legitimate Site</h1> </header> <section> <p>This is a legitimate website. You can trust the content here.</p> </section> <footer> <p>© 2024 Legitimate Site. All rights reserved.</p> </footer> </body> </html>
malicious-site.html
<!DOCTYPE html> <html> <head> <style> body { font-family: Arial, sans-serif; } .danger-sign { color: red; font-size: 2em; } .warning-message { color: red; font-weight: bold; } </style> </head> <body> <header> <h1 class="danger-sign">⚠️ Danger: Malicious Site</h1> </header> <section> <p class="warning-message">This website has been identified as potentially harmful. Visiting it may pose a security risk to your computer and personal information.</p> </section> <footer> <p>Please close this page immediately and do not proceed.</p> </footer> </body> </html>
輸出

示例 2
在本示例中,當網頁載入時,它會自動點選一個名為“clickMe”的按鈕。當此特定按鈕透過點選接收使用者互動時,它會觸發一個 JavaScript 事件,該事件將使用者重定向到一個名為“malicious-site.html”的潛在有害站點。這種隱蔽的操作令人不安地引導使用者前往他們不知情且未經同意的目的地。請務必注意:這些做法確實具有潛在的危害性和不道德性;人們必須以負責任的態度,並在法律和道德的範圍內處理它們。
malicious-site.html 程式碼與上面相同。
home.html
<!DOCTYPE html> <html> <head> <style> body { display: flex; align-items: center; justify-content: center; height: 100vh; margin: 0; } button { position: absolute; z-index: 1; background-color: transparent; border: none; font-size: 20px; cursor: pointer; } </style> </head> <body onload="myFunction()"> <h2>Your Content Goes Here</h2> <button id="clickMe">Click Me</button> <script> window.onload = function() { var button = document.getElementById("clickMe"); button.click(); }; document.getElementById("clickMe").addEventListener("click", function() { window.location.href = "malicious-site.html"; }); </script> </body> </html>
輸出

現實世界中的點選劫持事件
1. Facebook“贊”按鈕 (2011)
攻擊者在誘人的影片縮圖上覆蓋了一個惡意的“贊”按鈕,欺騙使用者不知不覺地喜歡了一個惡意的頁面。
2. Adobe Flash 更新詐騙 (2015)
偽裝成 Adobe Flash 更新的惡意按鈕覆蓋在合法網站上,導致使用者在不知情的情況下下載惡意軟體。
3. Twitter 點選劫持攻擊
Twitter 上偽裝成誘人內容的惡意連結導致使用者無意中轉發和傳播惡意內容。
4. LinkedIn 虛假連線請求
點選劫持被用來欺騙 LinkedIn 使用者與虛假個人資料建立連線,方法是在看似無害的內容上覆蓋連線請求按鈕。
5. Google Play 商店欺騙
Google Play 商店上的惡意覆蓋導致使用者進行意外下載或操作,通常與廣告相關。
預防措施
1. X-Frame-Options 標頭
在 Web 伺服器的響應中將 X-Frame-Options 標頭設定為 DENY 或 SAMEORIGIN,以防止您的站點嵌入在 iframe 中。
2. 防範框架指令碼
在您的網頁中實現防範框架指令碼,以防止它們嵌入在 iframe 中。
3. 內容安全策略 (CSP)
使用內容安全策略標頭來控制您的網站可以載入內容的來源,從而降低點選劫持的風險。
4. 使用者教育
教育使用者瞭解與互動不熟悉或可疑內容相關的潛在風險。
隨著網路安全的發展,點選劫持的未來趨勢可能包括利用人工智慧的更復雜技術、增加社會工程戰術的使用,以及重點繞過高階安全措施。此外,隨著增強現實(AR)和虛擬現實(VR)等新興技術的興起,沉浸式點選劫持體驗的新途徑可能會出現,這要求防禦策略和使用者意識不斷創新。