如何配置 X-Frame-Options 响应头彻底杜绝恶意第三方站点对自身页面的点击劫持

冬磊君_2029

冬磊君_2029

2026-06-21

508人浏览

原创

x-frame-options 无法彻底杜绝点击劫持,需分路径配置 deny/sameorigin、与 csp frame-ancestors 共存并主动验证;allow-from 已废弃,静态资源不配此头,ie 仅支持 x-frame-options,现代浏览器优先识别 csp。

如何配置 x-frame-options 响应头彻底杜绝恶意第三方站点对自身页面的点击劫持

单靠 X-Frame-Options 无法“彻底杜绝”点击劫持,但它是最基础、最必须落地的一环。真正有效的防护需要分路径精准配置 + 与 CSP frame-ancestors 共存 + 主动验证,而不是加一行头就完事。

按页面语义选值:DENY 和 SAMEORIGIN 是唯二可用选项

ALLOW-FROM 已被 Chrome 46+、Firefox 76+ 完全废弃,生产环境严禁使用。实际可用的只有两个值:

  • DENY:任何场景都不允许嵌入(含同站),适合登录页、支付确认页、API 健康检查页等完全不需要被 iframe 加载的页面;
  • SAMEORIGIN:仅允许同源页面嵌入,适合管理后台首页、仪表盘等需内部 iframe 协作但拒绝外部嵌套的页面。

在 Nginx 中分路径配置,避免全局一刀切

不能在 http 或 server 块顶层写 add_header —— 否则 JS、CSS、图片等静态资源也会被错误带上该头,既无效又可能触发扫描误报。

  • PHP 动态页(如 /login、/admin/*):在 location ~ \.php$ 块内配置;
  • 纯 HTML 入口页(如 /index.html):在对应 location 块中单独设置;
  • API 接口(返回 JSON/TEXT):不配 X-Frame-Options,它们本就不该被 iframe 加载。

示例:

Mottle
Mottle

Mottle是一款用于为网站创建自定义 AI 聊天机器人的无代码工具。

下载
location ~ \.php$ {
  fastcgi_pass 127.0.0.1:9000;
  add_header X-Frame-Options "SAMEORIGIN";
}

必须与 Content-Security-Policy 的 frame-ancestors 共存

现代浏览器(Chrome 40+、Firefox 45+、Edge 79+)优先识别 Content-Security-Policy: frame-ancestors,并直接忽略 X-Frame-Options;而 IE ≤10 只认后者。二者需同时存在,不可互斥:

  • X-Frame-Options: DENY 等价于 frame-ancestors 'none';
  • X-Frame-Options: SAMEORIGIN 等价于 frame-ancestors 'self';
  • 若需放行多个可信域名(如微前端或 SaaS 嵌入),只能用 frame-ancestors https://a.com https://b.com,X-Frame-Options 做不到。

验证是否生效:不能只看响应头,要模拟真实攻击

curl 查看响应头只是第一步。真正要验证,得建一个含 iframe 的测试页:

在主流浏览器中打开,观察是否被阻止加载。若能正常渲染,说明配置未生效或被覆盖(比如后端框架自动注入了冲突头,或 Nginx 多处 add_header 导致重复)。还要检查是否有反向代理、CDN 或安全网关擅自改写或删除了该头。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

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

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

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

精品课程

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

共6课时 | 54.6万人学习

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

共89课时 | 133.4万人学习