插件窝 干货文章 Nginx的HTTP响应头与安全设置实践

Nginx的HTTP响应头与安全设置实践

header always Nginx add 487    来源:    2025-04-20

Nginx HTTP响应头安全设置最佳实践

核心安全响应头配置

1. X-Content-Type-Options

防止MIME类型嗅探攻击:

add_header X-Content-Type-Options "nosniff" always;

2. X-Frame-Options

防止点击劫持攻击:

add_header X-Frame-Options "SAMEORIGIN" always;
# 或完全禁止嵌入
add_header X-Frame-Options "DENY" always;

3. X-XSS-Protection

启用浏览器XSS过滤器(虽然现代浏览器已弃用,但仍有兼容价值):

add_header X-XSS-Protection "1; mode=block" always;

4. Content-Security-Policy (CSP)

内容安全策略(根据实际需求调整):

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none';" always;

5. Strict-Transport-Security (HSTS)

强制HTTPS安全传输:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

6. Referrer-Policy

控制Referer头信息:

add_header Referrer-Policy "strict-origin-when-cross-origin" always;

7. Permissions-Policy

控制浏览器功能访问:

add_header Permissions-Policy "geolocation=(), midi=(), camera=(), usb=(), magnetometer=(), accelerometer=(), gyroscope=(), payment=()" always;

其他安全相关配置

1. 服务器信息隐藏

server_tokens off;

2. 禁用不必要的HTTP方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

3. 防止内容类型嗅探

add_header X-Content-Type-Options nosniff;

4. 防止IE执行下载内容

add_header X-Download-Options noopen;

完整配置示例

server {
    listen 443 ssl;
    server_name example.com;

    # SSL配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # 安全头配置
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none';" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Permissions-Policy "geolocation=(), midi=(), camera=(), usb=(), magnetometer=(), accelerometer=(), gyroscope=(), payment=()" always;

    # 隐藏服务器信息
    server_tokens off;

    # 其他配置...
}

测试与验证

  1. 使用curl检查响应头:
curl -I https://yourdomain.com
  1. 使用在线工具验证:

- SecurityHeaders.io - Mozilla Observatory

注意事项

  1. CSP策略需要根据实际业务需求调整,过于严格可能导致网站功能异常
  2. HSTS预加载需谨慎,一旦提交无法撤销
  3. 配置变更后务必测试所有功能是否正常
  4. 使用always参数确保错误响应也包含安全头

这些配置可以显著提高网站的安全性,防止多种常见Web攻击。