
點擊劫持防護:2026 年最佳實務
了解如何開始進行點擊劫持防護。我們將介紹最佳實務、提示與技術,並說明點擊劫持攻擊的運作方式,提供更多指引。

什麼是點擊劫持?
點擊劫持是指攻擊者偽裝網頁元素,或將其隱藏在現有頁面上方,試圖重新導向你或讓你點擊其他內容。當你點擊,或被誘騙去點擊另一個元素時,可能會不小心造訪惡意網站、交出你的憑證,或洩露敏感資訊。你甚至可能會在假的詐騙網站上購買線上商品。
點擊劫持攻擊通常是透過在你已經看見的現有頁面上方顯示一個不可見的頁面或 HTML 元素來進行,通常位於 iframe 內。這會讓你以為自己點擊的是實際可見的頁面,但實際上你點擊的是一個不可見的按鈕或元素,而它連結到另一個疊加在其上的頁面。
如果這聽起來有點令人困惑,請先稍微耐心看下去。在本指南中,我們將拆解點擊劫持攻擊是什麼以及其運作方式。你將了解如何防止點擊劫持,以及你可以採取哪些措施來對抗這些情況。
.jpg?width=2560&quality=90&format=auto)
為什麼點擊劫持防護在 2026 年很重要?
點擊劫持之所以重要,是因為它會把原本無害的互動變成危險行為,並可能造成毀滅性的後果。你甚至不會察覺頁面上已被放置了覆蓋層。它肉眼不可見,且能重新包裝你頁面的介面,誤導你的使用者操作。如果你進入已完成驗證社群帳號的惡意網站,攻擊者就能竊取你的敏感憑證和其他詳細資訊。
點擊劫持之所以重要,還因為單次或隱藏的點擊就可能變更你的帳戶設定、強迫你訂閱其他內容,並在未經你同意的情況下追蹤頁面。想像一下,如果駭客透過點擊劫持讓你點擊某個頁面,進而取得你的使用者憑證。他們之後就能控制你的帳戶,並在你毫不知情的背景下讓你執行惡意活動。
點擊劫持會逐步侵蝕客戶對你組織的信任、增加你的支援成本,並讓這類攻擊更難防範。尤其當它們在不同服務之間變得更加分散且規模擴大時更是如此。而最糟的是,使用者無法分辨你網站的覆蓋層與這些欺騙性覆蓋層,因為它們始終隱藏著。
點擊劫持攻擊如何運作?
點擊劫持攻擊的一個常見例子,是你以為自己在關閉彈出視窗,實際上卻點到了不可見的「購買」和「讚」按鈕。另一個經典情境,是在你正在遊玩的電玩介面畫面底部放置隱藏的「啟用」或「啟動」控制按鈕。
請記住,點擊劫持不是網路釣魚。網路釣魚是透過說服或誘導你採取行動來得逞。但在點擊劫持攻擊中,你是因為點擊落點被誤導而受騙。點擊劫持感覺更自然,因為你不會多想,也不會預見攻擊即將發生(它沒那麼明顯)。
偽裝的點擊也可能在不需要你確認或驗證的情況下,確認購買、OTP 並進行轉帳。點擊劫持攻擊可以利用 UI 元素來授予權限,而這些權限是在虛假藉口下被點擊的。它也可能開啟你的相機、麥克風和位置設定,並透過欺騙性覆蓋層暴露隱私。
那麼,點擊劫持攻擊是一種瀏覽器錯誤嗎?其實不算,但它可以濫用你網站的標準功能,例如分層和 iframe。
單一登入驗證能防止它嗎?不能,因為點擊劫持攻擊可以操控你的 UI,而你的 SSO 只負責管理身分。
行動應用程式和混合式應用程式都可能受到點擊劫持攻擊影響,尤其是在它們用於顯示外部內容時。
如何偵測點擊劫持弱點?
偵測點擊劫持弱點的最佳方法之一,是嘗試從其他伺服器將你的網頁放入框架中。
- 開啟本機環境並建立一個簡單的 HTML 檔案。我們稱它為你的概念驗證(PoC)HTML 檔案。現在,在 HTML 主體中使用一個 <iframe> 標籤。將你想測試的敏感頁面 URL 嵌入你的
<iframe>標籤中。 - 將你的目標 URL 替換為你想測試頁面的 URL。儲存後在瀏覽器中檢視該頁面。如果你的目標頁面內容成功載入(也就是你在 iframe 標籤中提到的那個頁面),那麼你的網站很可能存在弱點。如果沒有載入,那你就是安全的。
- 這是偵測點擊劫持弱點的第一種方式,我們稱之為手動測試。
另一種找出方式是測試防禦繞過。若你的網頁瀏覽器已停用 JavaScript,你可以使用簡單的 frame-busting 指令碼。你也可以使用像雙重框架這類進階技術來進行點擊劫持攻擊防護與測試。
自動化弱點掃描器可以掃描 Web 應用程式中設定錯誤的防點擊劫持 HTTP 標頭,其中有些還能在網路分頁中檢查 HTTP 回應標頭。任何缺少 X-Frame-Options 和 Content-Security-Policy 等標頭的頁面都容易受到攻擊。
也有一些工具可以記錄你在目標頁面上的點擊,並使用攻擊 UI 覆蓋層重播,以模擬真實攻擊情境。這些工具可協助你找出各種點擊劫持弱點。
如何防止點擊劫持攻擊?
以下是一些你可以防止點擊劫持攻擊的方法:
使用 Permissions Policy 控制瀏覽器功能
現代瀏覽器可讓你限制嵌入式 iframe 能存取哪些功能。設定 Permissions-Policy 標頭以停用 fullscreen、geolocation、camera、microphone 和 payment request API。這可阻止攻擊者透過覆蓋層劫持敏感的瀏覽器功能。即使他們誘使你點擊,若沒有你的明確允許,他們也無法觸發危險權限。這是一層聰明的防禦,可限制攻擊者實際能利用其覆蓋層做什麼。
對嵌入內容套用 iframe Sandbox 限制
當你在 iframe 中嵌入外部內容時,sandbox 屬性預設會將其鎖定。除非你明確需要,否則請封鎖指令碼、表單和彈出視窗。請謹慎使用 allow 值——只有在 iframe 確實需要 JavaScript 時才授予 allow-scripts,並避免在非必要情況下使用 allow-same-origin。這種隔離策略可防止惡意嵌入內容存取你的主頁面或使用者資料。請定期測試你的 sandbox 設定,確保它們仍按預期運作。
使用事件監聽器監控使用者點擊行為
新增 JavaScript 事件監聽器以追蹤點擊實際來源。檢查點擊是否來自合法的 UI 元素,或來自與可見按鈕不符的位置。比較 event.target 與 event.currentTarget 以捕捉不一致情況。這有助於偵測那些看似針對可見元素、實際上卻點到其下方不可見圖層的點擊。雖然這無法阻止有決心的攻擊者,但它能捕捉常見的覆蓋層技巧,並為安全團隊建立稽核軌跡。
使用機器學習與 AI 偵測
先進的 ML 模型現在可透過分析頁面版面配置與使用者互動來識別點擊劫持模式。這些系統可即時發現可疑的 iframe 覆蓋層、不尋常的元素定位,以及行為異常。以網路釣魚資料集訓練的 CNN 與神經網路模型可在使用者受害前識別威脅。隨著這些技術持續改進,它們將能攔截傳統防禦措施未能偵測到的複雜攻擊。部署自動化威脅偵測,並搭配您的 HTTP 標頭,以獲得更深入的防護。
使用瀏覽器指紋辨識可疑活動
根據每位訪客的瀏覽器、裝置與硬體特徵,為其建立唯一的數位指紋。將指紋與您已知使用者的資料庫進行比對。如果您發現來自先前從未使用過的新裝置或新位置的點擊,請將其標記為需要額外驗證。指紋辨識可偵測攻擊者用來隱藏其身分的模擬器、VPN 和偽裝工具。結合行為分析後,它可協助您區分真實使用者與機器人,以及企圖發動 clickjacking 攻擊的詐騙者。
向使用者顯示網站真實性指標
顯示可證明你的頁面是真實且未遭竄改的視覺浮水印或來源證明徽章。當使用者看到這些指標消失或改變時,就表示可能是偽造頁面或覆蓋層攻擊。防禦性 UI 程式碼可在偵測到你的頁面被置於框架中時,自動顯示警告。使用者會學會信任這些視覺線索,使攻擊者更難誘騙他們點擊隱藏元素。
點擊劫持防護最佳實務
以下是一些點擊劫持防護應遵循的最佳實務:
1. 設定 X-Frame-Options HTTP 標頭
第一道防線是在你的伺服器上設定 X-Frame-Options 標頭。這會告訴瀏覽器你的頁面是否可以載入到 iframe 或 frame 中。這裡有三個主要選項:
- 'DENY' 是最安全的選擇,會封鎖任何網域將你的內容置於框架中。
- 'SAMEORIGIN' 僅允許你自己的網域將該頁面置於框架中,若你需要內部框架功能,這會很適合。
- 'ALLOW-FROM uri' 可讓你將特定受信任網域加入允許清單,但請謹慎使用,因為存在瀏覽器相容性問題。
2. 使用 frame-ancestors 實作 Content Security Policy
CSP 是防止點擊劫持的現代方法,而且比 X-Frame-Options 更具彈性。你可以將 frame-ancestors 指示詞加入 Content Security Policy 標頭,並指定哪些網域允許將你的內容置於框架中。如果你完全不需要任何框架,請將其設為 'none',或使用 CSP 語法指定受信任網域。
3. 使用 SameSite 屬性保護你的工作階段 Cookie
將你所有的工作階段 Cookie 標記為 SameSite 屬性,並設為 'Strict' 或 'Lax'。這可防止當你的頁面從其他網域載入到 iframe 中時傳送 Cookie。
當與其他防禦措施結合使用時,這可阻止攻擊者透過框架攻擊劫持已驗證的使用者工作階段。當設定為 'Strict' 時,保護會更強,但對於合法的跨網站導覽而言,'Lax' 在安全性與使用者體驗之間提供了良好的平衡。
4. 新增 Frame-Busting JavaScript 程式碼
在您的 <head> HTML 文件區段中加入 JavaScript frame-buster。此指令碼會檢查您的頁面是否正在框架內載入,若偵測到則會自動跳脫框架。這是一個可在大多數現代瀏覽器中運作的簡單備援層。不過,請確保您的 frame-busting 程式碼足夠穩固;避免使用過時技術,因為攻擊者可透過雙重框架等進階框架方法輕易繞過。
5. 對關鍵操作使用 window.confirm()
在允許使用者於 iframe 內完成敏感交易或變更帳戶之前,請使用 window.confirm() 方法強制進行明確確認。這會建立一個對話方塊,要求使用者主動確認自己即將執行的操作。即使其他保護遭到繞過,這也能增加操作阻力,並攔截攻擊者所依賴的誤點擊。
6. 定期測試您的弱點
在本機建立一個簡單的 HTML 檔案,並使用指向您網站 URL 的 iframe 標籤。嘗試在瀏覽器中載入它,以查看您的頁面是否會出現在框架內。若成功載入,表示您存在弱點,且需要實作上述標頭。若無法載入,則表示您的保護正在發揮作用。使用自動化弱點掃描器檢查您的 HTTP 回應標頭中是否缺少 X-Frame-Options 和 CSP 標頭。手動測試結合自動化可為您提供全面涵蓋。
7. 監控錯誤設定
使用可直接從瀏覽器網路分頁檢查 HTTP 回應標頭的工具。查看每個頁面上的 X-Frame-Options 和 Content-Security-Policy 標頭。任何缺少這些標頭的頁面都是潛在目標。有些自動化掃描器也可測試防禦繞過情況,並標示您實作中的弱點。
8. 納入雙重確認步驟
在允許使用者執行明確且高度敏感的操作(例如轉帳或刪除帳戶)之前,要求他們進行雙重確認。不要依賴用戶端指令碼。
9. 教育您的使用者
告知您的員工什麼是 clickjacking 攻擊以及其運作方式。教育他們留意不易察覺的覆蓋層、奇怪的彈出視窗,以及突然出現的權限要求。無論您採取何種 clickjacking 預防實作措施,請對照 OWASP clickjacking cheat sheet 進行檢查,並驗證您的網站是否確實受到保護。
結論
Clickjacking 如今正成為常見問題,但別擔心,現在您已了解在瀏覽器端與用戶端可能會遇到的情況。由伺服器驅動的通訊協定可限制瀏覽器 iframe 的使用,並防禦 clickjacking 攻擊。
Clickjacking 攻擊的效果也取決於瀏覽器端行為。如果您遵循最佳 Web 標準與安全瀏覽使用實務,您和您的使用者很可能會是安全的。保持警覺、檢查您的瀏覽器相容性,並別忘了充分利用您的 X-Frame-Options 和 Content Security Policy 以獲得足夠保護!
常見問題
Clickjacking 是指攻擊者誘騙使用者點擊他們原本無意點擊的內容。惡意網站會在合法內容上方覆蓋不可見的按鈕或連結。當您點擊自以為是一般按鈕的內容時,實際上是在啟動其後方隱藏的項目。攻擊者會控制接下來發生的事情。您的點擊可能會觸發非預期操作,例如變更帳戶設定、發佈內容或授權權限。您甚至不會意識到這件事已經發生。
缺少 X-Frame-Options 標頭是點擊劫持得以運作的主要原因。如果您的網站未設定此標頭,攻擊者就能將其嵌入 iframe 中。未使用 Content Security Policy 標頭也會使您暴露於風險之中。有些網站未能正確驗證使用者動作,使得誘騙訪客變得容易。未實作防框架技術的網站是攻擊目標。缺乏內建防護的舊版框架尤其面臨風險。處理敏感操作的應用程式需要適當的防禦措施,否則點擊劫持將會得逞。
開發人員應將 X-Frame-Options 標頭設為 DENY 或 SAMEORIGIN。這可防止瀏覽器在 iframe 內載入您的網站。您也可以使用具有 frame-ancestors 指示詞的 Content Security Policy 來控制框架嵌入。檢查所有重要的使用者操作,尤其是付款或權限變更等敏感操作。新增視覺指示,讓使用者知道他們何時正在與真正的按鈕互動。定期測試您的網站,以找出框架嵌入弱點。若涉及較舊的瀏覽器,可使用 JavaScript frame-busting 程式碼作為備援防護。
X-Frame-Options 是一個 HTTP 標頭,用來告知瀏覽器您的網站是否可以被嵌入框架。當設為 DENY 時,您的網站將完全無法載入於任何 iframe 中。SAMEORIGIN 僅允許來自相同網域的框架嵌入。ALLOW-FROM 可讓您指定可嵌入您內容的受信任網域。瀏覽器會遵循此標頭,並封鎖來自其他網站的框架嵌入嘗試。攻擊者無法在未經您允許的情況下覆蓋您的內容。這個簡單的標頭移除了攻擊者用於點擊劫持的主要工具,使其攻擊變得不可能。
您可以使用線上工具或瀏覽器開發人員工具檢查您的回應標頭。在您網站的 HTTP 回應中尋找 X-Frame-Options 標頭。如果缺少它,您就存在弱點。嘗試建立一個測試 HTML 檔案,使用 iframe 嵌入您的網站,並查看是否會載入。如果它出現在 iframe 內,就可能發生點擊劫持。手動測試有幫助,但自動化安全掃描器可以更快找出問題。同時測試您的主網域和子網域。請記得在進行變更後再次測試,以確認您的修正確實有效。
首先,將 X-Frame-Options 標頭新增至您的所有回應中。除非您需要框架嵌入,否則請將其設為 DENY。使用 Content Security Policy 標頭以提供額外保護。訓練使用者留意異常行為或非預期的提示。不要假設訪客的點擊總是有意的。針對重要操作實作 CSRF 權杖。讓您的框架與程式庫保持更新,因為它們會修補漏洞。定期執行安全稽核以找出錯誤設定。經常測試您的防禦措施,如此一來在攻擊發生時,您才能確認它們確實能正常運作。



