X-Content-Type-Options 是什么?

X-Content-Type-Options 是一种 HTTP 响应头,用于控制浏览器是否应该尝试 MIME 类型嗅探。如果启用了 X-Content-Type-Options,浏览器将遵循服务器提供的 MIME 类型,用于防止浏览器执行 MIME 类型错误的响应体(response body)。

如果在http响应头中指定的 Content-Type 与实际响应体返回的 MIME 类型不一致,这种情况下浏览器可能会忽略响应头中指定的Content-Type,执行实际响应体的 MIME 类型,造成安全风险,而设置 X-Content-Type-Options 就是为了避免这种类型的安全风险。

如何设置 X-Content-Type-Options ?

在服务器端(前后端分离的场景下,只需要在前端站点所在服务器配置即可,如果前后端在一起的话在项目所在服务器配置)的代码或反向代理服务配置中添加 X-Content-Type-Options 头即可。

以 nginx为例,在 nginx.conf 文件中添加以下行:

add_header X-Content-Type-Options nosniff;

以 apache为例,在 .htaccess 文件中添加以下行:

Header set X-Content-Type-Options "nosniff"

响应头 key 是 X-Content-Type-Options,值为 nosniff。这个配置是告诉浏览器禁止执行与 Content-Type 指定的类型不一致的响应内容,不要尝试从文件扩展名或文件内容中推断出文件类型,从而避免了内容嗅探所带来的安全风险。

X-Content-Type-Options 应用场景

主要用于防范 XSS(跨站脚本攻击)和 snippet-injection 攻击。snippet-injection 攻击是指把 HTML 代码嵌入到非 HTML 内容,浏览器会读取并解析该内容。这可能导致XSS攻击或着被误导到包含恶意代码的站点。

看个例子

下面是一段使用了 X-Content-Type-Options 响应头的代码:

HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
X-Content-Type-Options: nosniff<html>
<head>
<title>路多辛的博客</title>
</head>
<body>
<script>
alert("nosniff warning");
</script>
</body>
</html>

通过在响应头中添加 X-Content-Type-Options: nosniff,告诉浏览器只能执行 MIME 为 text/html 的响应内容,将阻止浏览器执行 JavaScript 代码。

Web安全之充分利用 X-Content-Type-Options相关推荐

  1. restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type

    报错信息: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no sui ...

  2. Spring Boot——[Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]解决方案

    问题描述 2020-02-13 19:32:04.322 WARN 109508 --- [p-nio-80-exec-4] .m.m.a.ExceptionHandlerExceptionResol ...

  3. SharePoint2010 内容类型剖析(Content Type/ 內容類型)

    原文地址:http://sharepoint410.wordpress.com/2011/01/06/sharepoint2010-%E5%86%85%E5%AE%B9%E7%B1%BB%E5%9E% ...

  4. Sharepoint学习笔记—ECM系列—找不到Content Type Publishing链接

    在调试Sharepoint2010内容管理部分时进入到某网站集的管理界面,发现找不到Content Type Publishing链接.于是就有了下面的知识点 并不是所有的Site Template都 ...

  5. HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported

    最近在做一个excel导入的功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下解决办法.以做记录. org.springframework.web.HttpMediaTy ...

  6. 报错Content type ‘multipart/form-data;boundary=----WebKitFormBoundaryTz0sivpVO7U0H70m;charset=UTF-8‘ n

    最近在做一个图片上传,遇到这了这种情况,在入参 body 中同时传入文件和其它参数信息结果出现如题异常. 特别在此记录解决办法,以供大家参考. method="post"必须事po ...

  7. Springboot 报错Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

    SpringBoot错误解决 1.错误展示 2021-03-23 12:20:02.805 ERROR org.springframework.web.HttpMediaTypeNotSupporte ...

  8. Server returned HTTP response code 415 for URL , Content type text/plain charset=UTF-8 not support

    客户端 http 请求报错 415,具体如下: Server returned HTTP response code: 415 for URL: http://ip:port/xxx 服务器端 用的是 ...

  9. HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ n

    问题如下: Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'applicatio ...

  10. Could not extract response: no suitable HttpMessageConverter found for content type [text/html]

    目录 报错信息 源码分析 解决方法 修改 mappingJackson2HttpMessageConverter 配置 继承 mappingJackson2HttpMessageConverter 实 ...

最新文章

  1. [原] Jenkins Android 自动打包配置
  2. Python中threading的join和setDaemon的区别及用法
  3. libsvm java下载_java-libsvm 版 结合已有数据集的demo,方便初学者使用 Develop 238万源代码下载- www.pudn.com...
  4. 苹果手机信号是哪个服务器,苹果手机信号差是网络问题还是手机问题
  5. 使用jQuery清空file文件域的解决方案
  6. C#多线程学习(一) 多线程的相关概念(转自xugang的blog)
  7. qq文件对方接收后一定会有提示吗_QQ要增加消息已读功能,你是否赞成?
  8. 年度电竞游戏旗舰红魔3S发布:性能王者2999元起!
  9. EXCEL图表数据源自动更新方法
  10. 苹果手用计算机解锁手机密码,苹果手机忘记密码怎样打开 苹果手机解锁常用方法分享...
  11. 电子地图下载器的地图级别与对应分辨率
  12. 华为面试题--字符串重排
  13. JPM Coin— 货币非国家化的开端 | TokenInsight
  14. dnf服务器未响应怎么解决方法,DNF地下城与勇士程序未响应怎么办——一招搞定...
  15. 科技论文写作之时态问题
  16. Caché 命令大全
  17. FPGA(二)串口通信
  18. VuePress + GitHub Pages 生成静态网站
  19. C++字符串转换为数值型
  20. fill()的使用方法

热门文章

  1. web常见页面错误代码及解决办法
  2. Windows 安装,配置Tomcat
  3. 解决:Axmath点击更新编号后,会多出许多编号,每个公式都会多加一个编号并显示在目录中,十分混乱
  4. 未来科技的发展趋势,对人类生活有哪些影响?
  5. 关于佳博热敏打印机添加打印机3019错误
  6. Java毕业设计之BOOT客户管理系统(附带源码链接)
  7. 小净空蓝牙天线怎么选 OA-C07天线
  8. 三星android 游戏下载地址,三星应用商店安卓版下载
  9. d3成神之路(六):散点图
  10. 鸡尾酒排序算法(java)