指南 · 约 3 分钟阅读

如何在任何技术栈上添加安全响应头

五个响应头就能覆盖大部分基础防护。下面是每个响应头的作用,以及适用于你的服务器的具体配置。

更新于 · HackGrade

代码和配置保持英文。

起步配置

  • Strict-Transport-Security:本站始终使用 HTTPS(启用前请先阅读 HSTS 指南)。
  • X-Content-Type-Options: nosniff:阻止浏览器猜测文件类型。
  • X-Frame-Options: SAMEORIGIN:阻止其他网站把你的网站嵌入框架(点击劫持)。
  • Referrer-Policy: strict-origin-when-cross-origin:向其他网站发送更少的网址信息。
  • Permissions-Policy:关闭你用不到的浏览器功能。

nginx

添加到你的 server { } 块中,然后运行 nginx -t 并重新加载。

nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

注意:如果某个 location 块有自己的 add_header,nginx 会在该 location 中丢弃 server 级别的响应头。请在那里重复这些响应头,或把它们放进共享的 include 文件。

Apache(.htaccess)

需要 mod_headers(大多数主机已启用)。

.htaccess
<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  Header always set X-Content-Type-Options "nosniff"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Cloudflare

  1. 在 SSL/TLS → Edge Certificates → HTTP Strict Transport Security 中开启 HSTS。
  2. 其他响应头可以创建一条 Response Header Transform Rule(Rules → Transform Rules → Modify Response Header),为所有传入请求把每个响应头设为静态值。

没有服务器权限的 WordPress

创建 wp-content/mu-plugins/security-headers.php。must-use 插件会自动加载。

PHP
<?php
// Security headers for pages WordPress serves.
add_action( 'send_headers', function () {
    header( 'X-Content-Type-Options: nosniff' );
    header( 'X-Frame-Options: SAMEORIGIN' );
    header( 'Referrer-Policy: strict-origin-when-cross-origin' );
    header( 'Permissions-Policy: camera=(), microphone=(), geolocation=()' );
} );

这只覆盖由 PHP 生成的页面。静态文件和部分页面缓存会绕过它,所以只要条件允许,在服务器或 CDN 上设置响应头更好。

下一步:Content-Security-Policy

CSP 是最强大的响应头,也最可能把东西弄坏。请按照 CSP 指南操作,并从仅报告模式开始。

参考资料

相关指南

免费 · 即时 · 无需注册

抢在别人之前了解你的评级。

被动扫描。未经你的许可,不会进行任何攻击性检测。

免费开始。付费套餐每月 12 美元起,或 29 美元购买单次报告。 查看价格