【HTTP】跳转单纯设置target="_blank"具有风险性及解决办法

683 阅读1分钟

风险性

  1. 新页面可以通过window.opener获取源页面的window对象,跨域也可以获取到部分属性。

钓鱼危害:开发者可以通过修改新页面的window.opener.location值,修改源页面的的url

  1. 子页面和父页面共用一个进程

解决办法

使子页面获取window.opener = null;

  • a标签
<a href="" target="_blank" rel="noopener"></a> // 设置rel="noopener"   
<a href="" target="_blank" rel="noreferrer"> </a> // 设置rel="noreferrer"
  • window.open()
const newPage = window.open();
newPage.opener = null;
newPage.location = '';
newPage.target = '_blank';