怎么配置 Web 服务器响应头防范点击劫持攻击 Clickjacking 指南

冰川箭仙

冰川箭仙

2026-07-09

687人浏览

原创

防范点击劫持需综合运用x-frame-options与content-security-policy frame-ancestors,差异化配置、严格语法、多层验证并兼顾合法嵌入需求。

怎么配置 web 服务器响应头防范点击劫持攻击 clickjacking 指南

防范点击劫持,关键不是加一个响应头就完事,而是用对策略、配准范围、留出必要例外,并验证是否真正生效。

X-Frame-Options:兼容性最好、必须配置的基础项

这个响应头是浏览器最早支持的防御手段,至今仍被所有主流浏览器(Chrome、Firefox、Edge、Safari)完整识别。它只控制页面能否被嵌入 <iframe></iframe><frame><object></object>,不防 XSS 或 CSRF,但它是第一道视觉隔离屏障。

  • DENY:最严格,禁止任何来源嵌入,包括同域自身页面。适合登录页、支付页等高敏页面
  • SAMEORIGIN:推荐默认值,仅允许同源嵌入。适用于需要内部 iframe 协作的管理后台或单页应用子模块
  • ALLOW-FROM:已被 Chrome 70+、Firefox 69+ 等主流版本废弃,不再建议使用

Nginx 中按路径差异化配置示例:

location /login {<br>    add_header X-Frame-Options "DENY";<br>}<br>location /admin {<br>    add_header X-Frame-Options "SAMEORIGIN";<br>}<br>location /embed/widget {<br>    add_header X-Frame-Options "ALLOW-FROM https://cdn.example.com"; # 仅限旧版兼容场景

Content-Security-Policy frame-ancestors:W3C 推荐的现代标准

X-Frame-Options 是过渡方案,frame-ancestors 才是当前唯一被 W3C 正式推荐、且所有现代浏览器强制执行的标准指令。它语法敏感,错一个字符就会完全失效。

Ai Agents Base
Ai Agents Base

AI Agent智能体综合目录网站

下载
  • 'none''self' 必须带单引号,写成 frame-ancestors noneframe-ancestors self 无效
  • 'self' 不支持路径后缀,'self'/dashboard'self' https://example.com/admin 都非法
  • 允许多个可信域名时,用空格分隔,不能加逗号:frame-ancestors 'self' https://embed.example.com https://dash.company.net
  • 通配符不被支持,https://*.example.com 会被忽略,必须列全实际域名

Nginx 示例(与 X-Frame-Options 共存,增强兼容性):

add_header Content-Security-Policy "frame-ancestors 'self' https://trusted-widget.com;";

验证响应头是否真正生效

光写配置没用,必须确认浏览器收到并解析了这些头。常见误区包括:

  • 在 HTML 中用 <meta http-equiv="X-Frame-Options" content="DENY"> —— 所有现代浏览器直接忽略,规范从未支持
  • 本地开发时看似生效,其实是 Vite/Webpack Dev Server 自动注入了响应头,非真实服务端行为
  • 未检查 Nginx 配置是否被子 location 覆盖,或是否被 proxy_pass 后端覆盖

验证方法:

  • curl -I https://yoursite.com/login 查看原始响应头
  • 打开 Chrome DevTools → Network → 刷页面 → 点击任意 HTML 请求 → Headers 标签页,确认 X-Frame-OptionsContent-Security-Policy 存在且值正确
  • 新建一个含 iframe 的测试页,尝试嵌入目标 URL,观察是否被拒绝加载或显示空白

特殊场景处理:合法嵌入需求不能一刀切

有些业务场景确实需要被第三方嵌入,比如 SaaS 嵌入式组件、数据分析工具(如百度统计热点图)、CDN 托管的微前端模块。此时不能简单设 DENY

  • 优先使用 frame-ancestors 明确列出白名单域名,比过时的 ALLOW-FROM 更可靠
  • 对嵌入方做 Referer 或 Origin 校验(需后端配合),响应头只是第一层防线
  • 若必须支持旧浏览器且无法升级 CSP,可临时启用 ALLOW-FROM,但需清楚其已不受新浏览器支持
  • 嵌入页面本身也应设置 X-Frame-Options: DENYframe-ancestors 'none',防止被二次嵌套
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

618

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1216

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

429

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1034

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1850

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

323

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习