zoukankan      html  css  js  c++  java
  • 关于 target="_blank"漏洞的分析

    关于 target="_blank"漏洞的分析 

    一、漏洞详情:
    首先攻击者能够将链接(指向攻击者自己控制的页面的,该被控页面的js脚本可以对母页面进行部分权限操控,如跳转:opener.location)存储在应用上,并展现给受害者,诱导受害者点击,才能继续后续攻击;
    漏洞根源:浏览器支持该功能; 

    二、防御方法:  有两种方法:      

    1、在用户输入链接的文本编辑器内和跳转链接时,将链接内容自动添加 rel=noopener特性(该特性不同浏览器支持情况不同,可以对不同浏览器添加不同的特性,如火狐还需添加 noreferrer特性;在一些老浏览器里面不支持这个属性,就可以通过js 手动设置 opener 为 null 来解决:

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

    2、在处理点击链接时,不在新窗口打开,而是在老窗口刷新(a标签不加target="_blank"  ;但该方法可能和国内用户使用习惯有冲突) 另,该漏洞属于浏览器漏洞,彻底杜绝的方法只能是浏览器不支持该特性;以上方法只是减少我们应用带给用户的风险,但如果其他应用存在该问题,用户依然会遭到钓鱼攻击,从而泄漏用户的各种信息;我们查看了百度、阿里等现有应用,均存在此问题;综上,个人觉得该漏洞的修复需求对我们并不高;

    -------------------------------分割线-----------------------------------

    今天看到知道创宇前端公众号有关于这个漏洞的分析

    再拿出来对比一下。

    1、发现提供了一个之前未记录的方法:

    修改http response header来弥补

    在 HTTP 的响应头中增加 ReferrerPolicy 头来保证来源隐私安全。

    ReferrerPolicy 需要修改后端代码来实现

    其它解决办法都是一样,noopener及noreferrer

    2、对SEO的考虑

    当然,在跳转到第三方网站的时候,为了 SEO 权重,还建议带上 rel="nofollow",所以最终类似于这样:

    <a
     
    href
    =
    "https://an.evil.site"
     
    target
    =
    "_blank"
     
    rel
    =
    "noopener noreferrer nofollow"
    >
    进入一个“邪恶”的网站
    </a>

     

    3、性能影响

    性能

    最后,再来说说性能问题。

    如果网站使用了 <atarget="_blank">,那么新打开的标签页的性能将会影响到当前页面。此时如果新打开的页面中执行了一个非常庞大的 JavaScript 脚本,那么原始标签页也会受到影响,会出现卡顿的现象(当然不至于卡死)。

    而如果在链接中加入了 noopener,则此时两个标签页将会互不干扰,使得原页面的性能不会受到新页面的影响。

    综上,以后对一个漏洞的修补方法除了要多维度、多层面来制定多种方法外,

    还要考虑性能、用户体验等各种影响;

    以期安全能更平滑的落地,甚至带来更好的性能等用户体验

  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/zjdyl/p/8521217.html
Copyright © 2011-2022 走看看