web安全之反向代理配置X-Frame-Options实现防盗链和防止点击劫持攻击
介绍
http响应头安全策略,从http头文件的方面,利用参数设置开启浏览器的安全策略,来实现相关的安全机制
X-Frame-Options HTTP响应头是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<embed>或者<object>中展现的标记。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 点击劫持(clickjacking)攻击。
也就是说,X-Frame-Options是可以用来控制页面是否可以嵌入其他页面 (内容被嵌到别人的网站中去,并在上面加一个透明层,诱导用户点击),并且还能避免点击劫持(clickjacking);
(仅当访问的用户使用支持 X-Frame-Options 的浏览器时,此附加的安全性才会被提供)
语法
X-Frame-Options 有三种可配置值:
X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com
allow-from设置多域名的方式1 (允许多个域名iframe嵌套,注意这里是用逗号分隔)
X-Frame-Options: allow-from https://example.com,https://example1.com,https://example2.com
allow-from设置多域名的方式2
X-Frame-Options: allow-from https://example.com
X-Frame-Options: allow-from https://example1.com
X-Frame-Options: allow-from https://example2.com
语法说明
字段 | 描述 | 备注 |
---|---|---|
X-Frame-Options: deny | 该页面不允许在 frame 中展示, 即便是在相同域名的页面中嵌套访问也不允许。 |
deny、sameorigin、allow-from 仅仅允许使用一种配置 |
X-Frame-Options: sameorigin | 该页面可以在相同域名页面的 frame 中嵌套访问 | deny、sameorigin、allow-from 仅仅允许使用一种配置 |
X-Frame-Options: allow-from https://example.com/ | 该页面可以在指定来源的 frame 中嵌套访问 | 1.deny、sameorigin、allow-from 仅仅允许使用一种配偶者 |
示例
配置 Apache
配置 Apache 在所有页面上发送 X-Frame-Options 某个响应头,需要把下面这行添加到 'site' 的配置中
Header always set X-Frame-Options "SAMEORIGIN"
配置好后,可能重启Apache2失败,原因是没有安装headers模块
执行命令:# a2enmod headers 即可安装headers模块
安装后可以在/etc/apache2/mods-enabled/header.load 目录下看到headers.load模块可用
配置 Nginx
配置 Nginx 发送 X-Frame-Options 某个响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN always;
允许多个域名iframe嵌套
add_header X-Frame-Options: allow-from https://example.com
add_header X-Frame-Options: allow-from https://example1.com
add_header X-Frame-Options: allow-from https://example2.com
或者
注意这里是用逗号分隔:
add_header X-Frame-Options "ALLOW-FROM http://example.com,https://example1.com,https://example2.com";
配置 IIS
配置 IIS 发送 X-Frame-Options 某个响应头,添加下面的配置到 Web.config 文件中:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
配置 HAProxy
配置 HAProxy 发送 X-Frame-Options响应头, 添加下面这行到 front-end, listen, or backend 配置中:
rspadd X-Frame-Options:\ SAMEORIGIN
参考
[互联网健康与隐私保护的非营利组织Mozilla X-Frame-Options#语法]
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Frame-Options#语法
[nginx >> Module ngx_http_headers_module]
http://nginx.org/en/docs/http/ngx_http_headers_module.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示