前端 防止使用 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

相关文章
相关标签/搜索