You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2016 IIS中HSTS头的测试、验证及问题修复

HSTS头检测异常的验证与修复方案(Windows Server 2016 + IIS)

一、验证HSTS头的真实存在性

浏览器缓存、扫描目标偏差都可能导致你看到的结果和扫描工具不一致,按以下步骤排查:

  • 用命令行工具直接检测
    避免浏览器缓存干扰,使用curl或PowerShell直接请求HTTPS站点:

    • curl命令:curl -I https://你的域名 --insecure(--insecure用于跳过自签证书验证),查看输出中是否包含Strict-Transport-Security: max-age=31536000
    • PowerShell命令:Invoke-WebRequest -Uri https://你的域名 -UseBasicParsing | Select-Object -ExpandProperty Headers,检查返回的Headers集合中是否存在Strict-Transport-Security字段
  • 排查浏览器缓存影响
    打开浏览器隐私/无痕窗口,重新访问站点并查看响应头。普通模式下浏览器可能缓存了之前的HSTS记录,导致你看到的是缓存后的结果。

  • 确认扫描工具的目标参数
    检查安全扫描工具的配置:

    • 是否扫描的是HTTPS端口(443),而非HTTP端口(80)?HSTS头仅能在HTTPS响应中返回,若工具扫描HTTP端口,必然会提示缺失
    • 是否包含子域名扫描?默认HSTS仅作用于当前域名,若工具扫描子域名且你未配置includeSubDomains参数,也会触发缺失提示

二、若确实存在问题的修复方案

1. 全局配置HSTS头(覆盖所有站点)

打开IIS管理器,选择服务器节点,双击HTTP响应头,点击「添加」:

  • 名称:Strict-Transport-Security
  • 值:max-age=31536000(如需覆盖子域名,改为max-age=31536000; includeSubDomains)

2. 单站点精准配置(通过web.config)

编辑目标站点根目录的web.config文件,在<system.webServer>节点下添加:

<httpProtocol>
  <customHeaders>
    <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
  </customHeaders>
</httpProtocol>

若已有<customHeaders>节点,直接插入<add>标签即可。

3. 排查模块冲突

检查站点是否使用URL重写或其他HTTP模块,部分规则可能会意外移除响应头。查看重写规则的「服务器变量」配置,确保未对Strict-Transport-Security头进行删除或修改操作。

4. 处理HTTP端口扫描告警(可选)

若扫描工具因扫描HTTP端口触发告警,建议开启HTTP到HTTPS的重定向(即使之前关闭),确保所有请求最终通过HTTPS返回HSTS头;若无需重定向,可在扫描工具中将HTTP端口排除出检测范围。

内容的提问来源于stack exchange,提问作者sam sergiy klok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:13:16