【必须】添加安全响应头 跨站脚本注入攻击 防嗅探
实践:
1、
https://github.com/Tencent/secguide/blob/main/Go安全指南.md
1.6.2 【必须】添加安全响应头
- 所有接口、页面,添加响应头
X-Content-Type-Options: nosniff
。 - 所有接口、页面,添加响应头
X-Frame-Options
。按需合理设置其允许范围,包括:DENY
、SAMEORIGIN
、ALLOW-FROM origin
。用法参考:MDN文档
最全HTTP安全响应头设置指南_语言 & 开发_Charlie Belmer_InfoQ精选文章 https://www.infoq.cn/article/SHlQeOJDEfSx*P5Cjg1s
关于MIME TYPE报错 - 简书 https://www.jianshu.com/p/8590a275f23a
X-Content-Type-Options
该响应报头确保浏览器遵守应用程序设置的 MIME 类型。这有助于防止某些类型的跨站脚本注入攻击。
它还能减少浏览器“猜测”某些内容不正确时的意外应用程序行为,例如,当开发人员将某个页面标记为“HTML”,但浏览器认为它更像 JavaScript,并试图将其渲染为 JavaScript 时。该响应报头能确保浏览器始终遵守服务端设置的 MIME 类型。
X-Content-Type-Options
X-Content-Type-Options
HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type
首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。
该消息头最初是由微软在 IE 8 浏览器中引入的,提供给网站管理员用作禁用内容嗅探的手段,内容嗅探技术可能会把不可执行的 MIME 类型转变为可执行的 MIME 类型。在此之后,其他浏览器也相继引入了这个消息头,尽管它们的 MIME 嗅探算法没有那么有侵略性。
安全测试人员通常期望站点设置了该消息头。
注意: nosniff
只应用于 "script
" 和 "style
" 两种类型。事实证明,将其应用于图片类型的文件会导致与现有的站点冲突。
Header type | Response header |
---|---|
Forbidden header name | no |
语法
X-Content-Type-Options: nosniff
指令
nosniff
- 下面两种情况的请求将被阻止:
- 请求类型是"
style
" 但是 MIME 类型不是 "text/css
", - 请求类型是"
script
" 但是 MIME 类型不是 JavaScript MIME 类型。
- 请求类型是"
MIME types (IANA media types) - HTTP | MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
MIME 嗅探
在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行MIME嗅探。每一个浏览器在不同的情况下会执行不同的操作。因为这个操作会有一些安全问题,有的 MIME 类型表示可执行内容而有些是不可执行内容。浏览器可以通过请求头 Content-Type
来设置 X-Content-Type-Options
以阻止MIME嗅探。
MIME types (IANA media types) - HTTP | MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
MIME sniffing
In the absence of a MIME type, or in certain cases where browsers believe they are incorrect, browsers may perform MIME sniffing — guessing the correct MIME type by looking at the bytes of the resource.
Each browser performs MIME sniffing differently and under different circumstances. (For example, Safari will look at the file extension in the URL if the sent MIME type is unsuitable.) There are security concerns as some MIME types represent executable content. Servers can prevent MIME sniffing by sending the X-Content-Type-Options
header.