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

一  X-Content-Type-Options响应头

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

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

                                            script标签  style  StyleSheet

  

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  --> "禁用浏览器的类型猜测行为"

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

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

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

 

③   问题引入

1、资源'展示'

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

3、测试'现象'

现象: 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' 中通过'<script src="js/min.wzj.js">'相对路径'加载'文件

++++++++++ "题外话" ++++++++++

location ~* min.wzj.js$ {

   alias /home/kiosk/WebstormProjects/form/js/min.wzj.js 

}

location和alias的搭配问题 

1、原因:是不是'原来'是好的,然后加了'安全加固'造成的

 add_header X-Content-Type-Options: nosniff

2、观察: 是'nginx返回静态资源'还是后端'返回'的

  通过'$upstream_addr'或'sent_http_content_type'判断

  备注:对比'$upstream_http_content_type'和'sent_http_content_type' -->"加工处理"

  补充: 定义一个'独一无二的响应头[加always]'放到对应的location中,看'到底生效了没'?

  附加: 在client看'异常url'的响应体,也'可以'辅助理解

3、排错

  1、如果是'后端返回错误的Content-Type',nginx如何能拦截?

  2、如果是'nginx自身返回错误的Content-Type',如何排查呢?

  3、​诡异: nginx把'图片'识别为'text/html',加了add_header都'不管用'

4、遗留: nginx是根据'$request_uri'还是'$uri' 是查找'静态'资源?

相关配置说明

遗留:add_header '显示添加'会不会'影响'default_type?

​思考:如果Content-Type'请求头'只有有限的几个,与响应头(Content-Type)'协商不一致'呢?

探究:原来虽然配置了安全头,但是'add_header'作用域覆盖了,导致'没有生效'

④  参考链接

css 的content-type为"text/html" 不是 "text/css" html兼容性

解决css文件返回格式Content-TYpe为text/html问题

php-fpm处为通配符"/",使得所有请求均会被php-fpm处理,导致css文件的响应头出错

浏览器strict MIME type checking问题处理

为 CSS 设置正确的 Content-Type

Java Web 发送请求 CSS文件 和 JS文件引用失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/75738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Element Plus报错:ResizeObserver loop completed with undelivered notifications.

el-selected踩坑&#xff1a;el-selected 显示下拉框 mouseover 时报错&#xff01;&#xff01;&#xff01; 原来是属性 popper-append-to-body 被废除&#xff0c;改为 teleported。 element ui <el-select:popper-append-to-body"false"value-key"id&q…

Vscode 常用操作教程

一、语言换成中文 这是我们可以直接点击左边栏第四个图标搜索插件 chinese ,也可以直接ctrlshiftp快捷键也会出来如图所示图标&#xff0c;出来chinese 插件之后选择安装install,安装完成之后重新ctrlshiftp会出现如图所示页面 找到我的鼠标在的地方对应的中文&#xff0c;此时…

maven install

maven install maven 的 install 命令&#xff0c;当我们的一个 maven 模块想要依赖其他目录下的模块时&#xff0c;直接添加会找不到对应的模块&#xff0c;只需要找到需要引入的模块&#xff0c;执行 install 命令&#xff0c;就会将该模块放入本地仓库&#xff0c;就可以进…

大数据Flink(五十九):Flink on Yarn的三种部署方式介绍以及注意

文章目录 Flink on Yarn的三种部署方式介绍以及注意 一、Pre-Job 模式部署作业

【LeetCode75】第二十九题 删除链表的中间节点

目录 题目&#xff1a; 示例; 分析: 代码: 题目&#xff1a; 示例; 分析: 给我们一个链表&#xff0c;让我们把链表中间的节点删了。 那么最直观最基础的办法是遍历两边链表&#xff0c;第一遍拿到链表长度&#xff0c;第二次把链表中间节点删了。 这个暴力做法我没事过…

Sui网络的稳定性和高性能

Sui的最初的协议开发者设计了可扩展的网络&#xff0c;通过水平扩展的方式来保持可负担得起的gas费用。其他区块链与之相比&#xff0c;则使用稀缺性和交易成本来控制网络活动。 Sui主网上线前90天的数据指标证明了这一设计概念&#xff0c;在保持100&#xff05;正常运行的同…

无涯教程-Perl - setservent函数

描述 在第一次调用getservent之前,应先调用此函数。 STAYOPEN参数是可选的,在大多数系统上未使用。当getservent()检索服务数据库中下一行的信息时,然后setervent设置(或重置)枚举到主机条目集的开头。 语法 以下是此函数的简单语法- setservent STAYOPEN返回值 此函数不返…

Android 百度地图 bitmap 透明图片背景变黑色

现象&#xff1a; 本来透明背景的png图片渲染出来时黑色的了 原因&#xff1a; 为了节省内存资源对图片进行了压缩&#xff0c;使用到了 bitmap.compress(Bitmap.CompressFormat format, int quality, OutputStream stream)方法&#xff0c;具体设置为 bitmap.compress(Bit…

Linux系统中基于NGINX的代理缓存配置指南

作为一名专业的爬虫程序员&#xff0c;你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器&#xff0c;能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南&#xff0c;提供实用的解决方案&#xff0c;助你解决在…

Android进阶之多级列表

遇到一个需求需要显示多级列表&#xff0c;因为界面是在平板上的&#xff0c;所以层级是从左向右往下排的&#xff0c;类似于 我当时的写法是在xml布局里一个个RecyclerView往下排的 当然前提是已经规定好最大的层级我才敢如此去写界面&#xff0c;如果已经明确规定只有两级或…

一.net core 自动化发布到docker (Jenkins安装)

目录 1.安装Jenkins 参考资料:https://www.jenkins.io/doc/book/installing/docker/#downloading-and-running-jenkins-in-docker 1.Open up a terminal window.(打开一个终端窗口。) 2.Create a bridge network in Docker using the following docker network create comma…

SpringBoot整合、SpringBoot与异步任务

目录 一、背景描述二、简单使用方法三、原理五、使用自定义线程池1、默认使用2、如何使用自定义线程池 六、Async失效情况1、同一个类中&#xff0c;一个方法调用 Async标注的方法 一、背景描述 java 的代码是同步顺序执行&#xff0c;当我们需要执行异步操作时我们通常会去创…

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包

SpringBoot项目使用maven-assembly-plugin插件多环境打包 1.创建SpringBoot项目并在pom.xml文件中添加maven-assembly-plugin配置 <!-- 多环境配置 --><profiles><!-- 开发环境 --><profile><id>dev</id><properties><prof…

List和ObservableCollection和ListBinding在MVVM模式下的对比

List和ObservableCollection和ListBinding在MVVM模式下的对比 List 当对List进行增删操作后&#xff0c;并不会对View进行通知。 //Employee public class Employee : INotifyPropertyChanged {public event PropertyChangedEventHandler? PropertyChanged;public string N…

聊聊在集群环境中本地缓存如何进行同步

前言 之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说&#xff0c;因为他项目的redis版本不是6.0版本&#xff0c;因此他使用我文章介绍通过MQ来实现本地缓存同步&#xff0c;他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取…

MPLS实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】R1与R5MPLS VPN 【2】R6与R7MPLS VPN 【3】R7可以访问R2/3/4的环回 实验思路如下&#xff1a; &#xff08;1&#xff09;合理的IP配置 &#xff08;2&#xff09;R2、R3、R4的 IGP 配…

张俊林:由ChatGPT反思大语言模型(LLM)的技术精要

转自&#xff1a;https://mp.weixin.qq.com/s/eMrv15yOO0oYQ-o-wiuSyw 导读&#xff1a;ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型&#xff08;LLM,Large Language Model&#xff09;效果能好成这样&#xff1b;惊醒是顿悟到我们对LLM的认知及发展理念&a…

RabbitMQ简单使用

RabbitMq是一个消息中间件&#xff1a;它接收消息、转发消息。你可以把它理解为一个邮局&#xff1a;当你向邮箱里寄出一封信后&#xff0c;邮递员们就能最终将信送到收信人手中。 RabbitMq、消息相关术语如下&#xff1a; 生产者&#xff1a;生产者只发送消息&#xff0c;发…

怎样让音频速度变慢?请跟随以下方法进行操作

怎样让音频速度变慢&#xff1f;在会议录音过程中&#xff0c;经常会遇到主讲人语速过快&#xff0c;导致我们无法清晰听到对方说的内容。如果我们能够减慢音频速度&#xff0c;就能更好地记录对方的讲话内容。此外&#xff0c;在听到快速播放的外语或方言时&#xff0c;我们也…