危险的target —— 另一种攻击方式
字数 948 2025-08-29 08:32:02

危险的target属性攻击方式详解

1. 传统opener攻击回顾

在HTML中,当使用target="_blank"打开新页面时,新页面可以通过window.opener对象控制源页面的URL,这可能导致钓鱼攻击:

<a href="https://evil.com" target="_blank">点击这里</a>

新打开的页面可以通过JavaScript修改原页面的URL:

window.opener.location = 'https://evil.com/phishing-page';

2. 新型target属性攻击

文章介绍了一种不依赖opener的攻击方式,利用target属性和window.name的特性。

攻击示例

<html>
<head><meta charset="utf-8"></head>
<body>
    <a href="https://www.baidu.com" target="baidu" id="baidu">click me</a>
    <script>
        setInterval(function(){
            baidu.href = "http://evil.com/baidu";
            baidu.click();
        }, 10000);
    </script>
</body>
</html>

攻击原理

  1. target属性机制:当target属性不是_blank_self_parent_top时,浏览器会使用指定的值作为新窗口的window.name

  2. 攻击流程

    • 用户点击链接,打开目标网站(如百度)
    • 攻击者通过JavaScript定时修改<a>标签的href属性
    • 再次自动点击该链接,在同一标签页打开新URL
    • 由于window.name相同,新页面会覆盖原页面
  3. 持久性特点

    • 即使用户在新标签页手动输入其他网址
    • 或通过链接跳转到其他网站
    • 地址栏仍然会被源页面控制
    • 理论上只要源页面不关闭,可以永久控制目标页面的地址栏

3. 防御措施

针对传统opener攻击

<a href="https://example.com" target="_blank" rel="noopener noreferrer">安全链接</a>

或使用JavaScript:

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

针对新型target攻击

  1. 避免使用非标准target值:除非必要,不要使用自定义的target名称

  2. 设置CSP策略:限制页面中可以执行的脚本

  3. 用户教育:提醒用户注意地址栏异常变化

  4. 浏览器更新:使用最新版浏览器,部分现代浏览器已对此类攻击有防护

4. 攻击影响

  1. 钓鱼攻击:显示伪造的URL地址,诱导用户输入敏感信息

  2. 持久性强:不像opener攻击那样容易被用户察觉

  3. 跨域限制:仍然受同源策略限制,但足以进行钓鱼攻击

5. 实际检测方法

用户可以通过以下方式检测是否遭受此类攻击:

  1. 打开开发者工具查看实际网络请求
  2. 检查页面是否包含可疑的定时脚本
  3. 尝试在新标签页手动输入网址,观察地址栏是否异常

6. 总结

这种新型target属性攻击展示了HTML特性可能被滥用的另一种方式,相比传统的opener攻击具有更强的持久性和隐蔽性。开发者在实现跳转功能时应充分了解这些安全风险,并采取适当的防护措施。

危险的target属性攻击方式详解 1. 传统opener攻击回顾 在HTML中,当使用 target="_blank" 打开新页面时,新页面可以通过 window.opener 对象控制源页面的URL,这可能导致钓鱼攻击: 新打开的页面可以通过JavaScript修改原页面的URL: 2. 新型target属性攻击 文章介绍了一种不依赖 opener 的攻击方式,利用 target 属性和 window.name 的特性。 攻击示例 攻击原理 target属性机制 :当 target 属性不是 _blank 、 _self 、 _parent 或 _top 时,浏览器会使用指定的值作为新窗口的 window.name 。 攻击流程 : 用户点击链接,打开目标网站(如百度) 攻击者通过JavaScript定时修改 <a> 标签的 href 属性 再次自动点击该链接,在同一标签页打开新URL 由于 window.name 相同,新页面会覆盖原页面 持久性特点 : 即使用户在新标签页手动输入其他网址 或通过链接跳转到其他网站 地址栏仍然会被源页面控制 理论上只要源页面不关闭,可以永久控制目标页面的地址栏 3. 防御措施 针对传统opener攻击 或使用JavaScript: 针对新型target攻击 避免使用非标准target值 :除非必要,不要使用自定义的target名称 设置CSP策略 :限制页面中可以执行的脚本 用户教育 :提醒用户注意地址栏异常变化 浏览器更新 :使用最新版浏览器,部分现代浏览器已对此类攻击有防护 4. 攻击影响 钓鱼攻击 :显示伪造的URL地址,诱导用户输入敏感信息 持久性强 :不像opener攻击那样容易被用户察觉 跨域限制 :仍然受同源策略限制,但足以进行钓鱼攻击 5. 实际检测方法 用户可以通过以下方式检测是否遭受此类攻击: 打开开发者工具查看实际网络请求 检查页面是否包含可疑的定时脚本 尝试在新标签页手动输入网址,观察地址栏是否异常 6. 总结 这种新型target属性攻击展示了HTML特性可能被滥用的另一种方式,相比传统的opener攻击具有更强的持久性和隐蔽性。开发者在实现跳转功能时应充分了解这些安全风险,并采取适当的防护措施。