Nginx防止点击劫持:X-Frame-Options

就是你的页面,被别人网站在iframe标签中引用了。我看到很多的所谓AI绘画的网站,其实它就是通过iframe引用了别人的AI绘画的页面。

网站被别人的iframe标签中引用,还不是最坏的,更可恶的是,它通过iframe标签向我们的网站注入外部的JS脚本。为什么可以这样子,因为iframe引用网站,相当于浏览器另外打开了个窗口,对浏览器来说,是同源的。那么它就可以通过js操作DOM,往这个iframe引用的网站页面写入<script>标签,从而注入外部的JS脚本。哪怕你在Nginx的内容安全策略CSP写明了script-src 'self',也就是执行的js脚本只能是本页面的js脚本,都于事无补,这种漏洞就叫做点击劫持,就相当于你的页面被别人劫持了。

所以nginx的响应头应该添加:

复制代码
http {
	add_header X-Frame-Options DENY;
}

就是禁止页面被iframe引用,X-Frame-Options还有常用的另一个值:SAMEORIGIN,就是页面可以被iframe引用,但只能是同域名的iframe引用,其他域名的ifame标签不能引用这个页面。

复制代码
http {
	add_header X-Frame-Options sameorigin always;
}

为什么要加always,因为Nginx的add_header只对状态码为2xx,3xx才有效,对4xx,5xx的不起作用,Nginx文档是对于add_header建议加上always

还有就是前端页面的标签不再支持添加 X-Frame-Options 头,必须在服务器设置,如果配置了HAProxy,同样是要配置在响应头添加X-Frame-Options

相关推荐
Decay__6 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农6 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
陈希1237 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
SQL7711 小时前
IT运维发展史,一部宏伟史诗
运维·运维发展史
分布式存储与RustFS12 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet12 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
Java码农也是农12 小时前
一篇文章讲清 NGINX 反向代理:location、proxy_pass、负载均衡与排错
nginx·负载均衡·后端开发·反向代理·proxy_pass
爱和冰阔落14 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器
李纲明1 天前
WordPress 打开页面直接报 500 而不是白屏:先核伪静态与文件权限,再查服务器错误日志
nginx·wordpress·文件权限·伪静态·错误日志·devdiy·500错误