在Nginx中配置Content Security Policy (CSP) 可以提高网站的安全性,防止跨站脚本攻击(XSS)和其他代码注入攻击。CSP通过指定允许加载的资源来源来实现这一目的。以下是如何在Nginx中配置CSP的步骤:
编辑Nginx配置文件:
打开你的Nginx配置文件,通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/yourdomain.com。
添加CSP头:
在 server 或 location 块中添加 add_header 指令来设置CSP头。你可以根据需要自定义CSP策略。
以下是一个基本的CSP配置示例:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;
location / {
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';";
# 其他配置...
}
}
在这个示例中:
default-src 'self';:默认情况下,只允许从当前域加载资源。script-src 'self' https://trustedscripts.example.com;:允许从当前域和 https://trustedscripts.example.com 加载脚本。object-src 'none';:不允许加载任何插件(如 <object>, <embed>, <applet> 等)。测试配置: 在重新加载Nginx之前,使用以下命令测试配置文件是否有语法错误:
sudo nginx -t
重新加载Nginx: 如果配置文件没有问题,重新加载Nginx以应用更改:
sudo systemctl reload nginx
验证CSP头: 使用浏览器开发者工具或在线工具(如 CSP Evaluator)来验证CSP头是否正确设置。
你可以根据具体需求定制更复杂的CSP策略。例如:
允许图片从特定域加载:
add_header Content-Security-Policy "default-src 'self'; img-src 'self' https://trustedimages.example.com;";
允许字体从特定域加载:
add_header Content-Security-Policy "default-src 'self'; font-src 'self' https://trustedfonts.example.com;";
允许样式表从特定域加载:
add_header Content-Security-Policy "default-src 'self'; style-src 'self' https://trustedstyles.example.com;";
允许连接WebSocket:
add_header Content-Security-Policy "default-src 'self'; connect-src 'self' wss://trustedws.example.com;";
通过这些步骤,你可以在Nginx中配置CSP,从而提高网站的安全性。