天天看點

target=”_blank” 有漏洞了 Html打開新視窗也能實施釣魚攻擊

target=”_blank”這個看着眼熟嗎? target=”_blank”有漏洞了。這個屬性是用在html 代碼中打開一個新視窗,然而這個動作将會給攻擊者實施釣魚攻擊帶來機會。

​現在,許多主流的網際網路服務提供商都會在網頁的連結位址中加入target=”_blank”屬性,而這絕對是一種非常不安全的行為。不僅如此,target=”_blank”屬性還将會使廣大網際網路使用者暴露在釣魚攻擊的風險之下。

當使用者點選了某個網站中帶有target=”_blank”屬性的超連結後,浏覽器會單獨建立一個标簽頁來顯示該連結所指向的内容。但是請注意,在這一瞬間,浏覽器會允許建立的标簽頁通過一個名為“window.opener”的浏覽器api來與之前的網頁進行短暫通信。

此時,攻擊者就可以将惡意代碼嵌入在新打開的網站中,然後檢測使用者是從哪一個網站跳轉過來的,最後再利用window.opener接口來迫使原始網頁打開一個新的url位址。

比如說,如果使用者點選了facebook網站中一個帶有target=”_blank”屬性的連結,那麼攻擊者就可以利用一個僞造的facebook頁面來替換原始的facebook網頁,然後要求使用者重新輸入使用者名和密碼。這樣一來,攻擊者便成功擷取到了目标使用者的憑證資料。

<b>下圖示範了 target=”_blank” 攻擊的實作過程和效果:</b>

target=”_blank” 有漏洞了 Html打開新視窗也能實施釣魚攻擊

可怕的是,instagram、facebook、以及twitter等大型社交網站都會受到這種攻擊的影響。

在上述這三大社交網站中,隻有instagram徹底修複了這個問題。而對于twitter而言,隻有當使用者使用safari浏覽器來通路twitter網站時才有可能出現這種問題。但是谷歌卻早已公開表示,他們并不關心這個問題…

這也就意味着,修複該問題的重擔将落在網站管理者的身上了。實際上,修複該問題最簡單的方法就是在網站所有的連結中加入rel=”noopener”屬性。對于火狐浏覽器而言,由于它并不完全支援該屬性,是以開發人員應該使用rel=”noopenernoreferrer”屬性作為代替。

請記住,當你每次使用window.open()接口來打開一個新的網頁視窗時,你的安全性很有可能會受到這一api的影響,是以别忘了重置“opener”屬性。

<code>var newwnd = window.open();</code> <code>newwnd.opener = null;</code>

我個人認為twitter解決這一問題的方法應該是最有效的。twitter的開發人員使用了一個腳本來自動向網站中的連結添加該屬性。而安全研究人員也表示,攻擊者之是以仍然能夠通過safari浏覽器來利用twitter的這一漏洞,很有可能是因為他們所用的腳本中存在問題。

那麼為什麼國外早年的網站設計師要給使用者養成預設在頁面内打開連結的習慣呢?或者說為什麼他們認為在頁面内打開是更正确更值得引導的方式呢?他們也是有所的思考的的,

知乎上 @六子6zi 是這麼說的

使用者将無法控制它在本頁打開還是新視窗打開。這是不尊重使用者的選擇。

新視窗打開使工作列更加地擁擠。

新視窗打開增加浏覽器資源的消耗。

新視窗打開是後退按鈕變得不可用。

使用者更加期望新頁面在當頁載入。

原文釋出時間:2017年3月24日

本文由:freebuf 釋出,版權歸屬于原作者

原文連結:http://toutiao.secjia.com/target_blank-vulnerability

本文來自雲栖社群合作夥伴安全加,了解相關資訊可以關注安全加網站

繼續閱讀