安全头响应头(三)X-Content-Type-Options

一  X-Content-Type-Options响应头

说明:先写个'框架',后续补充

安全头响应头(三)X-Content-Type-Options_第1张图片

思考:请求类型是 "style" 和 "script" 是什么意思?

                                            script标签  style  StyleSheet

安全头响应头(三)X-Content-Type-Options_第2张图片  

安全头响应头(三)X-Content-Type-Options_第3张图片

JavaScript MIME type

文件扩展和Content-Type的映射关系

场景: 一个'.jpg的图片文件'被恶意嵌入了可'执行'的'js'代码

①  基础铺垫

nginx(十八)mime.types的作用

+++++++ "列举CDN一个应用场景:避免nginx默认的Content-Type元数据" +++++++

types {}

default_type '';

特点: 此时'nginx'不返回'Content-Type'响应头,完全由'浏览器'自行判断

②  浏览器默认行为

1) 互联网上的资源有'各种类型',通常浏览器会根据'响应头的Content-Type字段'来'分辨'它们的类型

2) 例如:"text/html"代表html文档、"image/png"是PNG图片、"text/css"是CSS样式文档

3) 然而'有些资源的Content-Type'是'错的'或者'未定义[最常见]'

ps:这时某些浏览器会'启用MIME-sniffing'来'猜测'该资源类型,'解析'内容并'执行' --> "默认"

  1、给一个html文件指定Content-Type为"text/plain",在IE8中会被当做html来解析

  2、利用浏览器的这个特性,攻击者甚至可以让'原本应该解析为图片'的请求被解析为'js'

遗留: X-Content-Type-Options: nosniff  --> "禁用浏览器的类型猜测行为"

+++++++++++++++++++  "案例讲解"  +++++++++++++++++++

安全头响应头(三)X-Content-Type-Options_第4张图片

# 1) 取消nginx'默认'的 mime.types配置
types        { } 

# 2) 指定css文件返回指定content-type      
default_type text/html;  

安全头响应头(三)X-Content-Type-Options_第5张图片

 安全头响应头(三)X-Content-Type-Options_第6张图片

安全头响应头(三)X-Content-Type-Options_第7张图片

③   问题引入

1、资源'展示'

安全头响应头(三)X-Content-Type-Options_第8张图片

2、这里'简化'nginx.conf配置,只做了'核心'说明

安全头响应头(三)X-Content-Type-Options_第9张图片

3、测试'现象'

安全头响应头(三)X-Content-Type-Options_第10张图片

现象: url请求'.css和.js 静态文件',nginx 返回的Content-Type是'text/html'

chrome '报错':

  1、Refused to execute script from 'xxx.js' 

  2、because its MIME type ('text/html') is not executable,

  3、and strict MIME type checking is enabled

强调:作为'运维人员',尽可能的'保留'和'还原'案发的'事故'现场

疑惑:为什么没有根据'mine.type'返回正确的'Content-Type'?

现象及其相似 

index.html 'meta text/html' 中通过'
                    
                    

你可能感兴趣的:(HTTP,http,网络协议)