window.open()和target= blank存在安全漏洞

前端小智發表於2021-10-27
作者:Daniel
譯者:前端小智
來源:js-craft

有夢想,有乾貨,微信搜尋 【大遷世界】 關注這個在凌晨還在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。

我們經常使用 HTML target="_blank"window.open() 在新視窗中開啟頁面。

// in html
<a href="www.google.com" target="_blank">open google</a>

// in javascript
window.open("www.google.com")

但是,當新開啟的頁面指向一個我們不知道的網站時,我們就會被暴露在釣魚網站的漏洞中。新頁面通過 window.opener物件獲得了對連結頁面的一些部分訪問許可權。

例如,可以使用 window.opener.location 將初始頁面的使用者指向一個假的釣魚網站,該網站模仿原始網站的外觀並做各種噁心的事情。鑑於使用者信任已經開啟的頁面,這可能是非常有效的。

為了防止這種情況,我們可以:

在 HTML 中使用 rel="noopenertarget="_blank"

<a href="someLink.com" target="_blank" rel="noopener noreferrer">
    open securely in a new tab
</a>

在Javascript中,一定要重置 opener 屬性:

const newWindow = window.open("someLink.com");
newWindow.opener = null;

後續:現在看來,noreferrer 是多餘的,所以 noopener` 對於HTML的使用應該是足夠的。


程式碼部署後可能存在的BUG沒法實時知道,事後為了解決這些BUG,花了大量的時間進行log 除錯,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug

原文:http://www.js-caft.io/blog/wi...

交流

有夢想,有乾貨,微信搜尋 【大遷世界】 關注這個在凌晨還在刷碗的刷碗智。

本文 GitHub https://github.com/qq44924588... 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。

相關文章