一個普普通通的周三下午,你打開某個頁面,上面只有一個醒目的“播放視頻”按鈕。你順手一點,頁面毫無反應,視頻并沒有播放。但就在同一瞬間,另一家銀行網站的后臺已經完成了一筆轉賬——用的是你的登錄態,操作的是你的賬戶。這一切發生得悄無聲息,因為剛才那個按鈕下面,壓著一整個你根本看不見的網銀頁面。
這不是恐怖片橋段,而是現代瀏覽器里一種極其經典又容易被忽視的攻擊手段:點擊劫持。它的攻擊目標恰好就是用戶每天接觸的UI界面,甚至可以說,它利用的正是我們“所見即所得”的本能信任。前端開發者常常以為安全是后端才需要操心的事,但點擊劫持偏偏證明,一個按鈕的擺放方式、一個iframe的嵌套,就可能讓整個網站陷入風險。
![]()
點擊劫持的核心邏輯在于欺騙視覺。攻擊者搭建一個外觀正常的惡意網站,把你真實的目標網站(比如網銀、社交平臺、后臺管理)通過透明的iframe嵌入到自己的頁面中。之后,攻擊者再在iframe上方精確覆蓋一層仿造的按鈕、鏈接或者輸入框。用戶以為自己點擊的是“領取獎勵”“播放視頻”“關閉廣告”,但實際上鼠標落點和觸摸事件全都穿透到了下面那個被隱藏的真實頁面上。
更棘手的是,這種攻擊的隱蔽性極高。用戶既看不到下方網站的真實內容,也感覺不到異常,因為所有視覺反饋都來自上層的偽造界面。如果被嵌的網站正好保持著用戶的登錄狀態——比如瀏覽器里存有Cookie或Token——那么一次看似無關緊要的點擊,就能夠完成關注賬號、發送消息、授權應用、修改設置,甚至發起轉賬等一系列敏感操作。在某些經過精心設計的攻擊中,攻擊者還能捕獲鍵盤輸入,比如在偽造的“驗證碼”框下方,疊加一個真實的聊天窗口或支付確認框,讓受害者主動輸入密碼、短信驗證碼等關鍵信息。
面對這種純UI層面的攻擊,現代瀏覽器已經在協議層內置了對應的防御機制,其中最直接的就是限制iframe嵌套的行為。HTTP響應頭里可以設置一條X-Frame-Options字段,值設為DENY時,會直接禁止任何其他頁面將當前網站嵌入iframe。如果業務上只需要在自己域名內嵌套,則可以用SAMEORIGIN來允許同源引用,同時阻止外部域名的嵌入。這兩種配置都很簡潔,但X-Frame-Options本身存在一定局限性——比如無法靈活指定多個允許的域名,也不支持更加精細的框架管控策略。
現在越來越多的開發者轉向使用內容安全策略來替代或補充舊的頭信息。CSP中的frame-ancestors指令可以精確控制哪些來源允許將當前頁面作為iframe、embed、object等元素嵌入。比如設置Content-Security-Policy: frame-ancestors 'self',瀏覽器就會明白:“只允許本站自身嵌套本站。”如果業務需要讓特定的合作方嵌入頁面,也可以在'self'后面追加https://example.com這樣的白名單域名。這種策略不僅靈活度更高,而且與CSP的整體安全體系保持一致,能夠避免因不同安全頭之間出現沖突而留下空隙。
在早期瀏覽器兼容階段,確實曾經流行過用JavaScript“破框”的辦法來防止點擊劫持。典型做法就是監聽當前window是否為頂層窗口,如果發現自己被嵌入iframe中,就強制把父頁面跳轉到自己的url。類似if(self!==top){top.location=self.location;}這樣的腳本一度被視為簡單有效的補救措施。但是這類前端代碼本身容易被攻擊者繞過——比如利用sandbox屬性禁止被嵌入頁面執行JavaScript,或者通過對top.location的寫入進行限制,甚至在某些情況下用XSS過濾機制直接掐斷這段邏輯。所以主流安全實踐已經不再推薦把JavaScript當成主要防線,而是強調必須在服務端就配置好X-Frame-Options或frame-ancestors這類HTTP頭。
從攻擊者的視角看,點擊劫持之所以成本低廉又難以追溯,很大程度上是因為它不需要注入代碼,也不需要拿到服務器權限,只要搞定視覺欺騙這一層就夠了。因此,凡是帶有狀態變更的按鈕、鏈接或是表單輸入區域,理論上都可能成為被劫持的目標。尤其是單頁應用里那些大量依賴AJAX提交的交互,對用戶來說只是一次點擊就完成了操作,背后卻可能調用了極敏感的API。一旦前端界面缺乏嵌入保護,用戶在不知情的情況下就會淪為攻擊的觸手。
這也就意味著,前端的安全邊界必須伸展到UI設計層面。開發者不僅需要考慮數據校驗、鑒
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.