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,则此时两个标签页将会互不干扰,使得原页面的性能不会受到新页面的影响。

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

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

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

  • 相关阅读:
    关于Python3中venv虚拟环境
    Python爬虫番外篇之关于登录
    站在圈外看待小米公司发展史
    Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)
    Python爬虫从入门到放弃(十八)之 Scrapy爬取所有知乎用户信息(上)
    Python爬虫番外篇之Cookie和Session
    Python爬虫从入门到放弃(十七)之 Scrapy框架中Download Middleware用法
    Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
    openstack的网络、子网、端口的关系
    openstack之安全组管理
  • 原文地址:https://www.cnblogs.com/zjdyl/p/8521217.html
Copyright © 2011-2022 走看看