# IIS/Nginx 安全响应头：HSTS、CSP 与真正重要的几个

> 用 IIS/Nginx 加 HSTS、CSP、nosniff、frame 保护和 Referrer-Policy，测试它们，并避免复制 CSP 打挂应用。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

先上很少打挂应用的：

```http
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Content-Security-Policy: frame-ancestors 'self'
```

完整 CSP 要先盘点 script/style/frame。抄来的 CSP 会打挂应用，然后被删。

## IIS

`web.config`：

```xml
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
      <add name="X-Content-Type-Options" value="nosniff" />
      <add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
      <add name="Content-Security-Policy" value="frame-ancestors 'self'" />
      <remove name="X-Powered-By" />
    </customHeaders>
  </httpProtocol>
</system.webServer>
```

IIS 可能自动加 `X-Powered-By`；删掉。不要给 HTTP 响应加 HSTS；浏览器忽略，但说明配置错了。

## Nginx

```nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "frame-ancestors 'self'" always;
server_tokens off;
```

`always` 让错误响应也带。

## HSTS

- 主机所有名字都 HTTPS 正常后再加。
- `includeSubDomains` 影响所有子域，确认。
- 先用短 `max-age` 试点；加容易，回滚慢（浏览器缓存）。
- 不懂移除流程不要加 `preload`。

## CSP

先 report-only：

```http
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'; report-uri /csp-report
```

再用 nonce/hash 处理内联脚本后强制。`frame-ancestors` 是现代替代 `X-Frame-Options`；旧客户端需要再留 XFO。

## 验证

```powershell
curl.exe -I https://lab.example/
curl.exe -I https://lab.example/assets/app.js
```

HTML、静态资源、错误页都查。只在 200 上加头是不完整的。

> **警告: CSP 跟应用强相关**
>
> 静态站的 CSP 不是带内联 bootstrap、第三方分析、WebSocket 的 SPA 的 CSP。盘点来源；report-only；一次改一个指令。

## 实验室边界

E1。实验室没有应用这些头或跑 CSP 报告收集器；片段是 Server 2025 上待验证起点。

## 来源

- [OWASP — Secure headers](https://owasp.org/www-project-secure-headers/)
- [MDN — Strict-Transport-Security](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Strict-Transport-Security)
- [MDN — Content-Security-Policy](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP)

---

来源页面: https://winbook.fyi/zh/server/security/headers/
