• target="_blank" 导致的钓鱼攻击


    挺久的漏洞,之前没仔细看现在看了下

    直接构建实验环境:

    test1.html:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
        <a href="./test2.html" target="_blank">测试网站</a>
    </body>
    </html>

    test2.html:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
        <p align="center">这是一个测试网站</p>
        <script>
            window.opener.location = "http://www.cnblogs.com/";
        </script>
    </body>
    </html>

    现在我们通过test1.html中的链接来打开test2.html

    打开之前:

    打开之后:

    我们发现test2.html中的js命令

    window.opener.location="http://www.cnblogs.com/";

    被执行了,导致原来的网站直接打开了cnblogs

    这是由于当用户点击了某个网站中带有target="_blank"属性的超链接后,浏览器会单独新建一个标签页来显示该链接所指向的内容。但是请注意,在这一瞬间,浏览器会允许新建的标签页通过一个名为"window.opener"的浏览器API来与之前的网页进行短暂通信。此时,攻击者就可以将恶意代码嵌入在新打开的网站中,然后检测用户是从哪一个网站跳转过来的,最后再利用window.opener接口来迫使原始网页打开一个新的URL地址。

    如何解决呢

    解决方案是在test1.html中

    将<a href="./test2.html" target="_blank">测试网站</a>

    改为<a href="./test2.html" target="_blank" rel="noopener noreferrer">测试网站</a>

    noreferrer是由于Firefox不支持noopener而添加的

    现在再来测试

    打开前:

    打开后:

    原网页并没有发生改变

    (技术细节摘自FreeBuf)

  • 相关阅读:
    onpropertychange与onchange事件应用
    HttpWorkerRequest实现大文件上传asp.net
    JQuery中对option的添加、删除、取值
    "分析 EntityName 时出错"的解决方法
    asp.net断点续传
    直接在ASP.net中上传大文件的方法
    ASP.NET中文件上传下载方法集合
    asp.net .ashx文件使用Server.MapPath解决方法
    FF与IE下javascript计算屏幕尺寸
    处理顶点——为赛道创建顶点
  • 原文地址:https://www.cnblogs.com/wocalieshenmegui/p/5967542.html
Copyright © 2020-2023  润新知