在Nginx中配置Cookie安全策略是增强Web应用安全性的重要措施。以下是详细的配置方法和最佳实践:
确保Cookie仅通过HTTPS传输,防止中间人攻击:
add_header Set-Cookie "Path=/; Secure; HttpOnly; SameSite=Lax";
防止JavaScript访问Cookie(防御XSS攻击):
add_header Set-Cookie "sessionid=123; Path=/; HttpOnly";
控制跨站请求时Cookie的发送行为:
- Strict:完全禁止跨站发送
- Lax:允许部分安全跨站请求(默认推荐)
- None:允许跨站发送(需配合Secure
)
add_header Set-Cookie "sessionid=123; Path=/; Secure; HttpOnly; SameSite=Lax";
add_header Set-Cookie "sessionid=123; Path=/admin; Domain=example.com; Secure; HttpOnly";
避免持久化Cookie带来的风险:
add_header Set-Cookie "sessionid=123; Path=/; Max-Age=3600; Secure; HttpOnly";
配合SameSite和CSRF Token:
# 生成并传递CSRF Token(通常由后端实现)
add_header X-CSRF-Token $csrf_token;
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
# Cookie安全策略
add_header Set-Cookie "sessionid=$session_id; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age=3600";
# 其他安全头部(可选)
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self'";
}
}
使用以下工具检查Cookie是否生效:
- 浏览器开发者工具(Application > Cookies)
- curl命令:
bash
curl -I https://example.com --insecure | grep -i set-cookie
- 在线安全检测工具(如SecurityHeaders.com)
session_start()
)需在应用层设置属性通过以上配置,可显著提升Cookie的安全性,有效防御XSS、CSRF等常见攻击。建议结合其他安全头部(如CSP、HSTS)形成纵深防御。