参考资料

  1. Nginx日志记录配置指令详细说明以及案例
  2. Nginx日志分析工具(ELK)配置详细说明以及案例
  3. Nginx端口监听(listen指令)详细说明以及案例
  4. 如何通过响应头防御XSS?
  5. nginx 配置静态文件路径
  6. 如何配置Nginx反向代理?
  7. Nginx配置文件详细说明以及案例
  8. nginx 配置跨域

通过响应头防御XSS的防护策略

1. Content-Security-Policy (CSP)

  • 作用:限制浏览器加载和执行资源的来源,防止恶意脚本注入。

  • 关键指令

    • default-src 'self':仅允许同源资源

    • script-src 'self':限制JS脚本来源

    • style-src 'self':限制CSS样式来源

    • img-src 'self':限制图片来源

    • connect-src 'self':限制AJAX请求来源

    • frame-src 'none':禁止内嵌<iframe>

    • report-uri /csp-report:违规时上报日志

  • 示例:  

    Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self'; img-src 'self' data:; frame-src 'none'; report-uri /csp-report

2. X-XSS-Protection

  • 作用:启用浏览器内置的XSS过滤器(旧版浏览器支持)。

  • 推荐设置:  

    X-XSS-Protection: 1; mode=block
    • 1:启用XSS过滤

    • mode=block:检测到XSS时阻止页面加载

3. X-Content-Type-Options: nosniff

  • 作用:禁止浏览器自动推断MIME类型,防止恶意文件被当作脚本执行。

  • 示例:  

    X-Content-Type-Options: nosniff

4. Strict-Transport-Security (HSTS)

  • 作用:强制HTTPS连接,防止中间人攻击(MITM)。

  • 推荐设置:  

    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    • max-age=63072000:有效期2年

    • includeSubDomains:适用于所有子域名

    • preload:提交到HSTS预加载列表

5. Referrer-Policy

  • 作用:控制Referer头的发送,防止敏感信息泄露。

  • 推荐设置:  

    Referrer-Policy: strict-origin-when-cross-origin
    • 同源时发送完整URL

    • 跨域时仅发送源(https://example.com

6. Feature-Policy(或Permissions-Policy

  • 作用:限制浏览器功能(如摄像头、麦克风、地理位置等)。

  • 推荐设置:  

    Feature-Policy: camera 'none'; microphone 'none'; geolocation 'none'

    或(现代浏览器):  

    Permissions-Policy: camera=(), microphone=(), geolocation=()

7. Set-Cookie安全属性

  • 作用:防止Cookie被恶意JS窃取。

  • 关键属性:  

    Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict
    • HttpOnly:禁止JS访问Cookie

    • Secure:仅通过HTTPS传输

    • SameSite=Strict(或Lax):限制跨站请求携带Cookie


完整示例响应头配置

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self'; img-src 'self' data:; frame-src 'none'; report-uri /csp-report
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict

总结

通过组合使用这些响应头,可以有效降低XSS攻击风险,提高Web应用的安全性。