在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,從而提高網站的安全性。