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

相关推荐
aml258__几秒前
一、Cisco( OSPF多区域与路由汇总技术实践:ABR优化网络路由表实验)251220
运维·网络·动态路由协议·网络优化·ospf多区域·abr·路由汇总
2503_93012393几秒前
Docker全阶段详解
运维·docker·容器
Web极客码6 分钟前
使用 apt 和 dpkg 查看Ubuntu 22.04已安装的软件
linux·运维·ubuntu
无极小卒10 分钟前
Nginx服务器无法访问图片的问题解决
运维·服务器·nginx
rchmin11 分钟前
云原生与DevOps关系解析
运维·云原生·devops
txzz888816 分钟前
CentOS-Stream-10 YUM第三方库配置
linux·运维·服务器·centos·yum第三方库配置
清水白石00822 分钟前
以领域为中心:Python 在 DDD(领域驱动设计)中的落地实践指南
java·运维·python
眠りたいです32 分钟前
Docker:认识Docker镜像仓库并进行拉取推送
运维·nginx·docker·容器·busybox
不想画图42 分钟前
Ansible自动化运维工具及基础用法
运维·自动化·ansible
大猫和小黄1 小时前
Ubuntu环境下GitBlit安装部署与版本库迁移
linux·运维·git·ubuntu·gitblit