前端 防止使用 target="_blank" 的惡意攻擊

危險的 target=」_blank」

當一個跳轉連接 這麼寫的時候 <a href="./target.html" target="_blank">target _blank</a> 在新打開的界面,將會暴露一個 opener對象,簡單的理解。這個對象就是父窗口的 windows對象,能夠直接使用父窗口的方法, 好比經過window.opener.location = newURL來重寫父頁面的url,即便與父窗口的頁面不一樣域,跨域的狀況下也生效,能夠在用戶不知情的狀況下,悄悄的改了原有的界面,等用戶在回頭使用時,卻已被釣魚,嚴重的,能夠誘導用戶輸入敏感信息。html

解決方案

  1. 使用noopener屬性

經過在a標籤上添加這個noopener屬性,能夠將新打開窗口的opner置爲空windows

<a href="./target.html" target="_blank" rel="noopener">target _blank noopener</a>跨域

  1. window.open並設置opner爲空
var otherWindow= window.open();
otherWindow.opener = null;
other = 'http://newurl';
複製代碼

舊版本瀏覽器

對於舊版本瀏覽器和火狐瀏覽器,能夠加上 rel="noreferrer" 更進一步禁用 HTTP 的 Referer 頭瀏覽器

總結

總而言之,若是使用了 target="_blank" 打開外部頁面,就必須加上 rel="noopener noreferrer" 屬性以保證安全安全

參考 在新窗口中打開頁面?當心有坑!bash

相關文章
相關標籤/搜索