当前位置: 首页 > news >正文

网络安全防护:点击劫持

目录

1、概念

2、攻击原理:视觉欺骗与层叠控制

3、点击劫持的危害

4、防御点击劫持

4.1 X-Frame-Options HTTP 响应头 (最直接有效)

4.2 Content-Security-Policy (CSP) HTTP 响应头 (现代、更强大)

4.3 客户端 JavaScript 防御 (Frame Busting)


1、概念

点击劫持(Clickjacking),也被称为“UI 覆盖攻击”或“UI 伪装攻击”,是一种恶意技术,攻击者通过欺骗用户在不知情的情况下点击看似无害的网页元素(如按钮、链接),但实际上点击的是攻击者精心隐藏的、位于诱饵页面透明层下方的另一个页面的敏感元素(如转账按钮、权限授权按钮、删除按钮等)。

跨域限制的绕过: 同源策略限制了 JavaScript 跨域读取 iframe 内容,但无法阻止 iframe 的嵌入接收用户输入事件(如点击)。这是点击劫持能发生的根本技术基础。

2、攻击原理:视觉欺骗与层叠控制

攻击的关键在于利用 HTML 的 iframe 元素和 CSS 的层叠(z-index)、透明度(opacity)和定位(positioning)属性:

  • 创建透明框架: 攻击者将目标网站(例如用户的银行页面、社交媒体设置页面、管理员后台等)嵌入到一个透明的 iframe 中。

  • 设计诱饵页面: 攻击者精心设计一个看起来无害、有吸引力的页面(例如一个有趣的游戏、一个免费赠品的领取页面、一个引人注目的视频缩略图等)。这个页面就是用户实际看到并与之交互的页面。

  • 覆盖与定位: 攻击者使用 CSS 将透明的目标网站 iframe 精确地覆盖在诱饵页面的特定可点击元素(如“开始游戏”、“领取奖品”、“播放视频”按钮)之上。通常,诱饵按钮会被做得很大或很诱人,而透明的 iframe 中的敏感按钮(如“确认转账”、“授权访问”、“删除账户”)则被定位到恰好位于诱饵按钮的下方。

  • 用户交互: 用户被诱骗访问这个恶意页面。用户看到的是诱饵页面上的按钮(例如“点击赢大奖”),并毫无戒心地点击它。

  • 恶意操作执行: 由于透明的 iframe 覆盖在诱饵按钮之上,用户的点击实际上落在了 iframe 内目标网站的那个敏感按钮上。如果用户已经在目标网站登录(例如浏览器保存了登录状态),那么这个操作(如转账、授权、删除)就会以用户的身份成功执行,而用户对此毫不知情,以为自己只是在玩一个游戏或领取奖品。

3、点击劫持的危害

  • 未经授权的资金转移: 劫持银行网站的转账操作。

  • 账户接管: 劫持更改密码、邮箱或安全设置的按钮。

  • 隐私泄露: 劫持“授权应用访问”按钮,将账户权限授予恶意应用。

  • 社交媒体滥用: 劫持“点赞”、“关注”、“分享”甚至“发布”按钮,在用户不知情下发布垃圾信息或不当内容。

  • 数据删除: 劫持“删除邮件”、“删除文件”、“删除账户”按钮。

  • 传播恶意软件: 劫持“下载”或“安装”按钮。

  • 窃取敏感信息: 通过拖拽劫持等方式。

4、防御点击劫持

防御主要依靠网站所有者在服务器端设置 HTTP 响应头,告诉浏览器该页面是否允许被嵌入到 iframe 中,以及谁可以嵌入:

4.1 X-Frame-Options HTTP 响应头 (最直接有效)

  • DENY: 页面绝对不允许被嵌入到任何 iframe 中。

  • SAMEORIGIN: 页面只允许被同源网站(相同协议、域名、端口)的页面嵌入。

4.2 Content-Security-Policy (CSP) HTTP 响应头 (现代、更强大)

  • 使用 frame-ancestors 指令来指定哪些页面可以嵌入该页面。

  • 例如:

    • Content-Security-Policy: frame-ancestors 'none'; (等同于 X-Frame-Options: DENY)

    • Content-Security-Policy: frame-ancestors 'self'; (等同于 X-Frame-Options: SAMEORIGIN)

    • Content-Security-Policy: frame-ancestors https://trusted.example.com; (只允许特定可信域名嵌入)

  • CSP 提供了比 X-Frame-Options 更细粒度的控制。

4.3 客户端 JavaScript 防御 (Frame Busting)

  • 在页面中加入脚本,检测自己是否被嵌套在 iframe 中,如果是,则尝试跳出框架(如 if (top != self) top.location = self.location;)。

  • 局限性: 现代浏览器有多种方式可以被攻击者利用来绕过 Frame Busting 脚本(如使用 sandbox 属性限制脚本执行、使用 XSS 先破坏页面本身等)。因此,这只能作为辅助手段,不能替代服务端设置 HTTP 头


文章转载自:

http://NI8qSNwI.Lqffg.cn
http://dubvYHiL.Lqffg.cn
http://LSfrMU6T.Lqffg.cn
http://agAHvL1F.Lqffg.cn
http://JA0FMCLI.Lqffg.cn
http://C9oM5gQA.Lqffg.cn
http://ifI9qjUY.Lqffg.cn
http://lNisDNRn.Lqffg.cn
http://gH24IMRd.Lqffg.cn
http://syz6w3ZU.Lqffg.cn
http://2zHdiwKY.Lqffg.cn
http://ZpEG6Drn.Lqffg.cn
http://wRLXf6b6.Lqffg.cn
http://EKbOcWny.Lqffg.cn
http://f5AFCCkd.Lqffg.cn
http://iqkv8UpZ.Lqffg.cn
http://7fL5k38B.Lqffg.cn
http://rqcZ6rgK.Lqffg.cn
http://QTihy1ep.Lqffg.cn
http://lITd7bLP.Lqffg.cn
http://pMFkiOS0.Lqffg.cn
http://G4DoQz1y.Lqffg.cn
http://UKTHN48X.Lqffg.cn
http://Ks3hPku0.Lqffg.cn
http://iTCWNtsM.Lqffg.cn
http://kGndlqJu.Lqffg.cn
http://yllavWOa.Lqffg.cn
http://MJoj2LE2.Lqffg.cn
http://8e86EohO.Lqffg.cn
http://LHuRDIcn.Lqffg.cn
http://www.dtcms.com/a/248326.html

相关文章:

  • uniapp中vue3 ,uview-plus使用!
  • 【SystemVerilog 2023 Std】第5章 词法约定 Lexical conventions (2)
  • 3款工具打造递进图:快速入门与个性化定制的实用指南
  • 【DNS解析】DNS解析从入门到精通
  • 音视频的前端知识
  • Git更新master分支完整指南:从拉取到推送的全流程
  • ArcGIS Pro 3.4 二次开发 - 工作流
  • Rust 学习笔记1
  • Mysql 函数concat、concat_ws和group_concat
  • 深入解析 MySQL 架构:从基础到高级
  • c++ std::function
  • 语法疫苗:SynCode如何为LLM生成装上“防崩溃引擎”
  • leetcode-hot-100 (链表)
  • 如何使用Postman做接口自动化测试
  • 某靶场CTF题目:利用Apache APISIX默认Token漏洞(CVE-2020-13945)获取Flag
  • lua读取请求体
  • 保姆级安装OpenResty教程
  • 开发指南121-微服务的弹性伸缩
  • opencv 之 视频类 VideoCapture、VideoWriter详细介绍
  • 【论文阅读33】滑坡易发性 PINN ( EG2025 )
  • 论文笔记 <交通灯><多智能体>CoLight管理交通灯
  • 当机床开始“思考”,传统“制造”到“智造”升级路上的法律暗礁
  • “第三届全国技能大赛”倒计时100天—千眼狼高速摄像机为焊接与增材制造项目提供可视化评判依据
  • Cloud Events:事件驱动架构的未来标准化
  • 腐烂之息-(Breath of Decay VR ) 硬核VR游戏
  • 欧洲宇航局如何为航天员提供虚拟现实训练内容
  • vue3 解析excel字节流文件 以表格形式显示页面上 带公式
  • Java + easyexcel 新旧数据对比,单元格值标红
  • 穿越时空的刀剑之旅:走进VR刀剑博物馆​
  • 720云vr全景怎么制作?720全景制作费用?