Web安全之充分利用 X-Content-Type-Options

安全 应用安全
如果在Http响应头中指定的 Content-Type 与实际响应体返回的 MIME 类型不一致,这种情况下浏览器可能会忽略响应头中指定的Content-Type,执行实际响应体的 MIME 类型,造成安全风险,而设置 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 代码。

责任编辑:姜华 来源: 今日头条
相关推荐

2013-01-18 14:02:46

VDI存储IOPS

2015-06-04 09:12:05

云安全

2024-10-28 15:14:53

2023-10-23 16:11:14

2010-05-06 12:44:13

Unix系统

2017-01-04 15:42:43

运营商SDN服务保障

2018-09-04 08:40:41

数据中心网络机柜

2015-02-26 09:50:42

vSphereSSD

2009-09-03 21:56:14

2009-05-21 09:08:52

接口C++面向对象

2020-08-18 09:03:06

云计算云存储数据

2019-06-13 19:20:38

云平台迁移云计算

2021-06-02 13:17:42

物联网IOT

2019-05-05 09:26:01

物联网安全物联网投资物联网

2013-03-22 10:30:16

IT主管ITM云计算

2023-09-05 14:58:23

大数据

2024-04-01 04:05:00

首席信息安全官安全预算CISO

2022-09-26 14:42:36

数据中心IT 行

2013-07-25 09:20:32

Windows 8.1

2019-08-06 09:52:16

网络工具数据
点赞
收藏

51CTO技术栈公众号