面试时遇到安全相关的一个题目 :超链接<a>标签带有target=“_blank”属性的,容易被利用进行诸如钓鱼等攻击,请问如何在书写代码时进行防范?(谷歌和火狐环境)。

自己看到这道题目的时候完全是懵逼的,关于web安全,只知道常见的XSS和CSRF,这个真是没听过,知识范围太窄了,呜呜呜~

通过百度之后终于有了解决方案:给a标签添加 rel='noreferrer noopener'。

原因:当使用 target='_blank' 打开一个新的标签页时,新页面的 window 对象上有一个属性 opener,它指向的是前一个页面的 window 对象,因此,后一个页面就获得了前一个页面的控制权。如果给链接添加‘rel=noopener’,再打开后你会发现 window.opener 已经被置为了 null,就无法再获取前一个页面的控制权了。

在chrome 49+,Opera 36+,打开添加了rel=noopener的链接, window.opener 会为null。在老的浏览器中,可以使用 rel=noreferrer。

也可用JavaScript来设置

var otherWindow = window.open(url);
otherWindow.opener = null;
otherWindow.location = url;

参考文章 https://juejin.im/post/5950f387f265da6c44072d6c

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-04
  • 2022-01-13
  • 2022-12-23
  • 2021-12-27
  • 2021-10-23
  • 2021-12-26
猜你喜欢
  • 2021-11-17
  • 2021-08-13
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2021-06-01
  • 2021-09-11
相关资源
相似解决方案