母版页添加CSP等安全头后securityheaders.com未识别求助
安全头无法被检测工具识别的原因及解决办法
核心问题
你通过HTML的<meta>标签声明安全头,但securityheaders这类工具只会识别通过HTTP响应头发送的安全头,不会解析HTML中的meta标签配置。
分安全头逐一说明问题
Content-Security-Policy(CSP)
虽然meta标签可以声明CSP,但存在功能限制(无法使用frame-ancestors、report-uri等指令),且检测工具优先识别HTTP响应头版本,甚至会忽略meta标签的配置。Referrer-Policy
你使用的<meta name="referrer" content="origin">语法是有效的,但工具同样优先检测HTTP响应头中的Referrer-Policy字段,服务器未返回该响应头时,工具不会识别meta标签的设置。Permissions-Policy(原Feature-Policy)
Feature-Policy已被Permissions-Policy取代,且meta标签的声明方式本身不被检测工具识别。另外你写的meta标签包含多余的src和allow属性,属于语法错误,即便修正语法,工具也不会识别meta版本的配置。
解决步骤
放弃使用meta标签声明安全头,改为在服务器端配置HTTP响应头:
- Nginx配置示例:
# 添加到server或location块中 add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self'; child-src 'none';" always; add_header Referrer-Policy "origin" always; add_header Permissions-Policy "geolocation=(src), ch-viewport-width=*" always; - Apache配置示例:
# 添加到.htaccess或服务器配置文件中 Header always set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self'; child-src 'none';" Header always set Referrer-Policy "origin" Header always set Permissions-Policy "geolocation=(src), ch-viewport-width=*"
配置完成后重启服务器,再进行检测即可识别到这些安全头。
内容的提问来源于stack exchange,提问作者VimalSingh
相关产品推荐
相关产品推荐

