已配置HSTS(含预加载)且禁用HTTP端口,扫描仍提示HSTS头缺失
HSTS头已配置但安全扫描仍提示缺失的排查方案
核对扫描工具的检测逻辑
不少扫描工具会优先尝试HTTP请求,哪怕你禁用了HTTP端口,若服务直接拒绝连接或跳转,工具可能无法识别HTTPS响应里的HSTS头。可以手动执行curl -I https://你的域名,确认HTTPS响应头里的HSTS字段格式合规,比如:Strict-Transport-Security: max-age=31536000; includeSubDomains; preload检查HSTS头的格式完整性
避免字段拼写错误:确保Strict-Transport-Security完整无错,max-age值为正数(建议至少31536000,即1年),includeSubDomains和preload参数拼写正确,参数间用分号加空格分隔。验证全路径的响应头一致性
部分路径可能被过滤器规则排除(比如静态资源、特定API、错误页面),测试根路径、子路径、404/500等错误页面的响应,确保所有HTTPS请求都返回HSTS头。排查反向代理/负载均衡的拦截
若应用前有Nginx、Apache等代理层,可能代理配置覆盖或过滤了后端返回的HSTS头。推荐直接在代理层配置HSTS,比如Nginx添加:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;其中
always参数确保错误响应也会携带该头。刷新扫描工具缓存与范围
部分工具会缓存旧结果,尝试清除缓存后重新扫描。同时确认扫描覆盖了所有子域名(若配置includeSubDomains),以及服务使用的非标准HTTPS端口(若未用443)。
内容的提问来源于stack exchange,提问作者Ashhh
相关产品推荐
相关产品推荐

