target=”_blank” 有漏洞了 Html打开新窗口也能实施钓鱼攻击

简介:

target=”_blank”这个看着眼熟吗? target=”_blank”有漏洞了。这个属性是用在html 代码中打开一个新窗口,然而这个动作将会给攻击者实施钓鱼攻击带来机会。

​现在,许多主流的互联网服务提供商都会在网页的链接地址中加入target=”_blank”属性,而这绝对是一种非常不安全的行为。不仅如此,target=”_blank”属性还将会使广大互联网用户暴露在钓鱼攻击的风险之下。

早在2014年,就已经有很多安全研究专家表示,target=”_blank”属性是非常不安全的一个属性。而且当初有些关于该属性的安全报告为了引起人们的注意,还特地将标题设置得非常醒目。我印象中最深的就是那篇标题为《Target=”_blank”–有史以来最被人们低估的漏洞》的报告,感兴趣的同学可以看一下这份报告[ Target="_blank" - the most underestimated vulnerability ever ]。

target=”_blank” 漏洞实现机制

当用户点击了某个网站中带有target=”_blank”属性的超链接后,浏览器会单独新建一个标签页来显示该链接所指向的内容。但是请注意,在这一瞬间,浏览器会允许新建的标签页通过一个名为“window.opener”的浏览器API来与之前的网页进行短暂通信。

此时,攻击者就可以将恶意代码嵌入在新打开的网站中,然后检测用户是从哪一个网站跳转过来的,最后再利用window.opener接口来迫使原始网页打开一个新的URL地址。

比如说,如果用户点击了Facebook网站中一个带有target=”_blank”属性的链接,那么攻击者就可以利用一个伪造的Facebook页面来替换原始的Facebook网页,然后要求用户重新输入用户名和密码。这样一来,攻击者便成功获取到了目标用户的凭证数据。

下图演示了 target=”_blank” 攻击的实现过程和效果:

target=_blank漏洞

target=”_blank” 漏洞影响范围

可怕的是,Instagram、Facebook、以及Twitter等大型社交网站都会受到这种攻击的影响。

在上述这三大社交网站中,只有Instagram彻底修复了这个问题。而对于Twitter而言,只有当用户使用Safari浏览器来访问Twitter网站时才有可能出现这种问题。但是谷歌却早已公开表示,他们并不关心这个问题…

target=”_blank” 漏洞如何修复?

这也就意味着,修复该问题的重担将落在网站管理员的身上了。实际上,修复该问题最简单的方法就是在网站所有的链接中加入rel=”noopener”属性。对于火狐浏览器而言,由于它并不完全支持该属性,所以开发人员应该使用rel=”noopenernoreferrer”属性作为代替。

大家可以看这篇文章 What problems does it solve?

请记住,当你每次使用window.open()接口来打开一个新的网页窗口时,你的安全性很有可能会受到这一API的影响,所以别忘了重置“opener”属性。

var newWnd = window.open();

newWnd.opener = null;

我个人认为Twitter解决这一问题的方法应该是最有效的。Twitter的开发人员使用了一个脚本来自动向网站中的链接添加该属性。而安全研究人员也表示,攻击者之所以仍然能够通过Safari浏览器来利用Twitter的这一漏洞,很有可能是因为他们所用的脚本中存在问题。

一点题外话 为什么老外不太用弹窗

那么为什么国外早年的网站设计师要给用户养成默认在页面内打开链接的习惯呢?或者说为什么他们认为在页面内打开是更正确更值得引导的方式呢?他们也是有所的思考的的,

知乎上 @六子6zi 是这么说的

  1. 用户将无法控制它在本页打开还是新窗口打开。这是不尊重用户的选择。
  2. 新窗口打开使任务栏更加地拥挤。
  3. 新窗口打开增加浏览器资源的消耗。
  4. 新窗口打开是后退按钮变得不可用。
  5. 用户更加期望新页面在当页载入。




原文发布时间:2017年3月24日
本文由:freebuf 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/target_blank-vulnerability
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
|
9月前
|
资源调度 JavaScript
vue项目:解决v-html可能带来的XSS是跨站脚本攻击
vue项目:解决v-html可能带来的XSS是跨站脚本攻击
852 0
|
Web App开发 JavaScript 前端开发
html转义及如何防止javascript注入攻击
有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用。如果用户输入了一段js脚本,比例:,页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的。
2870 0
|
移动开发 安全 Windows
Win7和Mac及HTML5将成黑客2011年攻击重点
据国外媒体报道,根据安全供应商Panda安全的调查显示,随着黑客主义(hactivism)和国家攻击行为的继续发展,2011年以Windows 7,Mac和HTML5为目标的攻击可能让信息安全专业人士手忙脚乱。
723 0
|
Web App开发 安全 前端开发
MVC Html.AntiForgeryToken() 防止CSRF攻击 - CSDN博客
原文:MVC Html.AntiForgeryToken() 防止CSRF攻击 - CSDN博客 (一)MVC Html.AntiForgeryToken() 防止CSRF攻击 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),攻击不同,XSS一般是利用站内信任的用户在网站内插入恶意的脚本代码进行攻击,而CSRF则是伪造成受信任用户对网站进行攻击。
2161 0
|
Web App开发 移动开发 JavaScript
HTML5安全风险详析之一:CORS攻击
原文地址:http://blog.csdn.net/hfahe/article/details/7961566   一、从SOP到CORS         SOP就是Same Origin Policy同源策略,指一个域的文档或脚本,不能获取或修改另一个域的文档的属性。
1071 0