首页/网络/协议速查/X-Content-Type-Options 禁止嗅探
HTTP 头与缓存70 条

X-Content-Type-Options 禁止嗅探

值为 nosniff:防浏览器无视响应 Content-Type 进行 MIME 嗅探,阻断「把 HTML/JS 伪装成图片」类攻击。

协议速查网络更新于 2026-10-13

关闭 MIME 嗅探

浏览器历史上会「猜」内容类型:即使服务端声明是 image/jpeg,只要字节看起来像 HTML,某些场景下仍会按 HTML 执行。X-Content-Type-Options: nosniff 明确禁止这种嗅探,让浏览器严格按 Content-Type 处理。它能阻断「把 HTML 或脚本伪装成图片上传,再诱导用户直接访问」这类攻击。

基本信息

方向响应头
取值只有 nosniff 一个有效值,写其它值等于没写
规范WHATWG Fetch 标准定义了 nosniff 行为,非 RFC 头
推荐范围全站,尤其上传目录与静态资源域
配套头X-Frame-Options、CSP、HSTS、Referrer-Policy 一起配更完整

相关安全响应头

头作用推荐值
X-Content-Type-Options禁止 MIME 嗅探nosniff
X-Frame-Options禁止被 iframe 嵌套SAMEORIGIN 或 DENY
Content-Security-Policy限制脚本与资源来源按业务白名单
Strict-Transport-Security强制后续走 HTTPSmax-age 至少 6 个月
Referrer-Policy控制 Referer 外发粒度strict-origin-when-cross-origin

Nginx 全站添加

Nginx 全站添加
# 放在 server 或 http 段,always 保证错误响应也带该头
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options SAMEORIGIN always;
# 校验
curl -sI https://example.com/ | grep -i x-content-type-options

典型使用场景

  • 上传目录:用户上传的图片里藏 HTML 时,浏览器不会把它当页面执行
  • 静态资源域:避免旧的兼容嗅探行为导致资源类型判断出错
  • 安全基线检查:等保与常规安全扫描都把该头列为必查项
  • 排查「下载的文件被当页面打开」:确认响应头是否带 nosniff
上传目录尤其需要这个头:即使上传做了扩展名与内容校验,历史文件或绕过校验的文件仍可能存在,响应头是最后一道防线。
加头时要留意 Nginx 的 add_header 继承规则:子级 location 里若再写 add_header,父级设置会被覆盖,最终可能只剩一条头;用 include 统一维护更稳妥。
自检时不要只看首页:用 curl -sI 分别抽查 HTML 页面、静态资源、上传文件与错误页四类路径,确认该头在每个分支都返回;错误页最常漏配。

易错点

  • 只在首页加头、上传目录没加:攻击面恰恰在上传目录,应该全站统一配置
  • Nginx 的 add_header 未加 always:返回 4xx 与 5xx 时头被丢弃,安全扫描仍判为不合格
  • 子级 location 写 add_header 覆盖了父级配置:以为全站都有 nosniff,实际只有部分路径生效
  • 应用框架与网关同时设置同一响应头:响应里出现重复头,个别客户端只取第一条,实际生效策略可能与预期不一致
  • 把该头当成万能的 XSS 防护:它只防嗅探,真正的脚本执行控制要靠 CSP 与输出编码

数据来源与参考

  • WHATWG Fetch 标准(nosniff)
  • MDN X-Content-Type-Options

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌