nginx解决HTTP 响应头 X-Frame-Options 缺失(点击劫持)漏洞
时间: 2024-12-30 07:29:08 浏览: 45
### 配置 Nginx 添加 X-Frame-Options 响应头
为了防止点击劫持攻击,在 Nginx 中配置 `X-Frame-Options` 响应头是一个有效的措施。通过设置此响应头,可以控制网页是否能在 `<frame>`、`<iframe>`、`<embed>` 或 `<object>` 中显示。
#### 方法一:全局配置
如果希望在整个服务器上应用这一保护机制,则可以在 Nginx 的主配置文件中的 `http` 上下文中加入如下指令:
```nginx
http {
...
add_header X-Frame-Options SAMEORIGIN;
...
}
```
这种方法适用于所有虚拟主机和服务[^1]。
#### 方法二:特定站点配置
对于仅需针对某个具体网站实施防护的情况,应该在对应站点的 `server` 块内添加相同的命令:
```nginx
server {
listen 80;
server_name example.com;
location / {
root html;
index index.html index.htm;
add_header X-Frame-Options SAMEORIGIN;
}
}
```
这样做的好处是可以更精细地管理不同子域或路径下的策略[^2]。
#### 方法三:多源支持
当业务逻辑复杂,涉及多个可信第三方时,可能需要允许多个域名加载当前页面作为 iframe 内容。此时可采用 `ALLOW-FROM` 参数来指定允许哪些外部资源访问:
```nginx
add_header X-Frame-Options "ALLOW-FROM https://trusted-third-party.example";
```
不过需要注意的是,并不是所有的现代浏览器都完全兼容这个选项;因此建议优先考虑使用 CSP (Content Security Policy) 来实现更加灵活的安全策略[^3]。
#### 可选值解释
- **DENY**: 页面不允许在一个框架中呈现。
- **SAMEORIGIN**: 页面只允许在同一原点内的其他文档中作为一个框架呈现。
- **ALLOW-FROM uri**: 页面可以从指定 URI 所表示的位置的一个框架中呈现[^4]。
阅读全文