對抗點擊劫持新武器:X-Frame-Options
阿恆
點擊劫持 (Clickjacking) 是一種誘使用戶點擊一個看似無害的超連結或按鈕,實際上卻是點擊在另一個網頁上的一個超連結或按鈕。後果可能是泄露了機密的資料,或無緣無故「讚好」一個網站,甚至開啓電腦內置的鏡頭和麥克風。網站開發人員當然有希望保護用戶不受攻擊,可用的手段主要有 Framekiller 和 X-Frame-Options,前者並不可靠,尤其在 IE 上可以輕易被攻擊者破解 (IE 的安全問題真是罄竹難書),後者只是瀏覽器自設的措施,並非業界標準。IETF 終於在兩個月前正式接受 X-Frame-Options 為 HTTP 的標頭 (header),從此開發人員的安全工具箱又多一件武器。
點擊劫持是甚麼?
設想有一個用戶在網上討論區或 Facebook 見到一個「每天賺一萬塊錢的方法」超連結,懷著好奇點擊一下,來到一個惡意網站,頁面有一個「快速賺錢祕訣」的超連結,他心想入寶山怎能空手回?毫不考慮便點擊下去,結果糊裏糊塗在自己的 Facebook 上「讚好」了一個商品的專頁,而他自己卻毫不知情。
原來那個惡意網站在「快速賺錢祕訣」超連結的前方,放置了一個透明的 iFrame,網址是「讚好」一個商品的 Facebook 專頁,iFrame 的位置經過小心安排,使裏面的 Facebook 按鈕剛好與「快速賺錢祕訣」超連結重疊,當用戶意圖點擊「快速賺錢祕訣」的時候,實際上點擊了 iFrame 中的 Facebook 按鈕,如果用戶的瀏覽器已經登入了 Facebook (十之八九用戶的瀏覽器都長期登入了 Facebook),這個「讚好」便會立即被執行。
X-Frame-Options 是甚麼?
X-Frame-Options 是一個 HTTP 標頭 (header),用來告訴瀏覽器這個網頁是否可以放在 iFrame 內。例如:
|
|
第一個例子告訴瀏覽器不要 (DENY) 把這個網頁放在 iFrame 內,通常的目的就是要幫助用戶對抗點擊劫持。第二個例子告訴瀏覽器只有當架設 iFrame 的網站與發出 X-Frame-Options 的網站相同,才能顯示發出 X-Frame-Options 網頁的內容。第三個例子告訴瀏覽器這個網頁只能放在 http://www.facebook.com/ 網頁架設的 iFrame 內。
不指定 X-Frame-Options 的網頁等同表示它可以放在任何 iFrame 內。
X-Frame-Options 可以保障你的網頁不會被放在惡意網站設定的 iFrame 內,令用戶成為點擊劫持的受害人,它剛在今年 10 月成為業界標準,IE8、Firefox、Safari、和 Chrome 都支援 X-Frame-Options。
用戶怎樣對抗點擊劫持?
除了依靠網站,用戶也可以防禦點擊劫持,包括:
- 工作後立即登出網站。
- 使用 Firefox 瀏覽器,並安裝 NoScript 附加元件,它的 ClearClick 功能防止 iFrame 內看不見 (包括透明或者被 CSS 隱藏起來) 的超連結、按鈕等被點擊。
- 停用包括 Flash 在內的插件,Adobe 的 Flash 插件曾被發現能導致點擊劫持的安全漏洞。