作者: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="noopener
和 target="_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... 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。