首页/安全/漏洞与攻击面速查/点击劫持与防框架嵌套
Web 漏洞原理与防护55 条

点击劫持与防框架嵌套

点击劫持把目标站点嵌入透明 iframe 诱导用户点击;防护是在响应头声明 X-Frame-Options 或 CSP 的 frame-ancestors,其中 frame-ancestors 支持更细的来源控制。

漏洞与攻击面速查安全更新于 2026-10-13

点击劫持与防护头

点击劫持把目标站点嵌进透明 iframe,让已登录用户在不知情的情况下点到真实按钮,完成转账、授权、改密等操作。防护方式是在响应头声明框架策略:X-Frame-Options 兼容性好但控制粗,CSP 的 frame-ancestors 支持按来源精细放行。两个头同时存在时,浏览器以 frame-ancestors 为准。

基本信息

防护头X-Frame-Options、Content-Security-Policy 的 frame-ancestors
常用取值DENY、SAMEORIGIN、frame-ancestors 'none' 或 'self'
优先级frame-ancestors 优先于 X-Frame-Options
覆盖范围所有交互页面与表单页,不只是首页
辅助手段高危操作加二次确认与操作凭证(前端框架防御只能兜底)
验证方式curl 看响应头,或本地搭 iframe 页面观察是否被拒绝渲染

取值与适用场景

配置效果适用场景
X-Frame-Options: DENY禁止任何来源嵌套无嵌入需求的业务系统
X-Frame-Options: SAMEORIGIN仅同源页面可嵌套站内确实存在 iframe 复用
frame-ancestors 'none'禁止嵌套,控制更彻底新系统推荐配置
frame-ancestors 'self'仅允许同源嵌套需要精细控制的场景
frame-ancestors 指定域名只放行明确来源门户嵌入子系统的架构

Nginx 配置

Nginx 配置
# 方式一:X-Frame-Options(兼容老浏览器)
add_header X-Frame-Options "DENY" always;

# 方式二:CSP frame-ancestors(推荐,可指定来源)
add_header Content-Security-Policy "frame-ancestors 'self';" always;

# 需要被门户嵌入时,只放行指定来源
# add_header Content-Security-Policy "frame-ancestors 'self' https://portal.example.com;" always;
# 两个头同时存在时以 frame-ancestors 为准

验证方式

验证方式
# 看响应头是否下发,注意 always:错误页也要带头
curl -sI https://example.com/login | grep -i -E 'x-frame-options|content-security-policy'
# 本地构造 iframe 页面,用浏览器打开观察是否被拒绝渲染
# 多页面抽查:登录、转账、授权、改密等交互页逐页确认

典型使用场景

  • 业务系统安全加固与合规检查项
  • 渗透测试报告中点击劫持问题的整改
  • 门户嵌入子系统时的白名单设计
  • 多站点统一响应头治理
  • 新旧系统切换时确认头部没有丢失
  • 前端改版后回归头部是否仍然下发
两个头同时存在时以 frame-ancestors 为准。按业务需要选择 DENY 或 SAMEORIGIN;确实需要嵌入时,只放行明确列举的来源,不要用通配。
只加响应头不等于全站安全:涉及转账、授权、改密等高危操作,仍建议加二次确认与操作凭证,避免单点防护被绕过。

易错点

  • 只在首页加头部,未覆盖表单与交互页:点击劫持通常针对具体操作页面
  • 同时配置 X-Frame-Options 与 frame-ancestors 且取值冲突,实际行为与预期不符
  • 依赖 ALLOW-FROM 取值,多数现代浏览器已不支持,等于没有防护
  • 头带上了但被反向代理或 CDN 覆盖,源站配置并未真正生效
  • 重复设置多个 CSP 头相互收紧,导致页面功能异常而被临时整体关掉

数据来源与参考

  • OWASP Clickjacking Defense Cheat Sheet
  • MDN X-Frame-Options 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌