nginx Content-Security-Policy通用配置
时间: 2024-10-18 09:01:16 浏览: 22
Content-Security-Policy (CSP) 是一种HTTP头部字段,用于帮助网站保护其内容免受跨站脚本攻击(XSS)和其他类型的恶意代码注入。Nginx作为一款流行的Web服务器,允许设置CSP来控制客户端能访问哪些资源以及如何加载它们。
在Nginx中配置CSP通常涉及在`http`或`server`块中添加`Content-Security-Policy`头,示例如下:
```nginx
server {
listen 80;
server_name yourdomain.com;
# 启用CSP
add_header Content-Security-Policy "default-src 'self'; script-src 'nonce-<hash>'; img-src 'https://example.com'; style-src 'sha256-<hash>';";
# 使用自定义策略(这仅作示例,需替换实际安全策略)
add_header Content-Security-Policy "frame-ancestors 'none'; object-src 'none'; connect-src https:;";
# 生成nonce值(用于动态脚本)
if ($request_method = 'POST') {
set $content_security_policy_nonce "nonce-$request_body";
add_header Content-Security-Policy "script-src 'nonce-$content_security_policy_nonce';";
}
# 其他相关配置...
}
```
这里的配置解释:
- `default-src 'self'`: 默认只允许从当前源加载资源。
- `script-src 'nonce-<hash>'`: 针对动态脚本,使用`nonce`加上一个随机哈希值,每次请求都会改变这个哈希,防止预先计算好的脚本执行。
- `img-src 'https://example.com'`: 只允许从指定的HTTPS源加载图片。
- `style-src 'sha256-<hash>'`: 类似于图片,使用SHA256哈希来限制样式表的来源。
阅读全文