Web安全之充分利用 X-Content-Type-Options
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相关推荐
- restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type
报错信息: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no sui ...
- 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 ...
- SharePoint2010 内容类型剖析(Content Type/ 內容類型)
原文地址:http://sharepoint410.wordpress.com/2011/01/06/sharepoint2010-%E5%86%85%E5%AE%B9%E7%B1%BB%E5%9E% ...
- Sharepoint学习笔记—ECM系列—找不到Content Type Publishing链接
在调试Sharepoint2010内容管理部分时进入到某网站集的管理界面,发现找不到Content Type Publishing链接.于是就有了下面的知识点 并不是所有的Site Template都 ...
- HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported
最近在做一个excel导入的功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下解决办法.以做记录. org.springframework.web.HttpMediaTy ...
- 报错Content type ‘multipart/form-data;boundary=----WebKitFormBoundaryTz0sivpVO7U0H70m;charset=UTF-8‘ n
最近在做一个图片上传,遇到这了这种情况,在入参 body 中同时传入文件和其它参数信息结果出现如题异常. 特别在此记录解决办法,以供大家参考. method="post"必须事po ...
- 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 ...
- 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 服务器端 用的是 ...
- HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ n
问题如下: Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'applicatio ...
- Could not extract response: no suitable HttpMessageConverter found for content type [text/html]
目录 报错信息 源码分析 解决方法 修改 mappingJackson2HttpMessageConverter 配置 继承 mappingJackson2HttpMessageConverter 实 ...
最新文章
- [原] Jenkins Android 自动打包配置
- Python中threading的join和setDaemon的区别及用法
- libsvm java下载_java-libsvm 版 结合已有数据集的demo,方便初学者使用 Develop 238万源代码下载- www.pudn.com...
- 苹果手机信号是哪个服务器,苹果手机信号差是网络问题还是手机问题
- 使用jQuery清空file文件域的解决方案
- C#多线程学习(一) 多线程的相关概念(转自xugang的blog)
- qq文件对方接收后一定会有提示吗_QQ要增加消息已读功能,你是否赞成?
- 年度电竞游戏旗舰红魔3S发布:性能王者2999元起!
- EXCEL图表数据源自动更新方法
- 苹果手用计算机解锁手机密码,苹果手机忘记密码怎样打开 苹果手机解锁常用方法分享...
- 电子地图下载器的地图级别与对应分辨率
- 华为面试题--字符串重排
- JPM Coin— 货币非国家化的开端 | TokenInsight
- dnf服务器未响应怎么解决方法,DNF地下城与勇士程序未响应怎么办——一招搞定...
- 科技论文写作之时态问题
- Caché 命令大全
- FPGA(二)串口通信
- VuePress + GitHub Pages 生成静态网站
- C++字符串转换为数值型
- fill()的使用方法