点评:即有一个特点,那就是在将
显示一个
文件的
用户将首先
检查文件的
类型,乍一看没什么问题,但事实上这是非常危险的,因为它会让IE从
图片上
执行代码,嵌入的图像的Javascript代码。引入MIME嗅探
功能的最初目的是为了弥补Web
服务器可以响应一个图像的请求的可能性
即有一个特点,那就是在将显示一个文件的用户将首先检查文件的类型,乍一看没什么问题,但事实上这是非常危险的,因为它会让IE从图片上执行代码,嵌入的图像的Javascript代码。引入MIME嗅探功能的最初目的是为了弥补内容类型信息的缺陷,Web服务器可能会返回
错误时,对图像的要求。
但事情没有
解决,坏人很容易滥用
属性,例如通过精心制作一个图像文件,并在其中显示嵌入式
浏览器和实现HTML和Javascript代码。本文将研究这个问题,并
介绍如何减少用户和Web开发人员对这个问题的风险。
1。危险的嗅探嗅探功能
对于Web 2
应用程序,允许用户
上传图像是一项基本要求。然而,IE用户面对这些图片时必须小心,因为IE的某些功能将打开图片的大门,以便使用跨站点
脚本攻击。
虽然许多大型
网站都试图
保护其访客免受可能的Javascript攻击,例如实现专门针对活动内容过滤器的防御,但它们无法中断活动,因为个人简介、博客和论坛、javascript、HTML代码和Flash applet是必不可少的活动。
此外,大多数交互网站允许用户上传和链接他们的图片,但攻击者可以使用此功能来颠覆IE引入的某些功能,以确保
兼容性和提供额外的安全性。攻击者只需要在图像的开头嵌入一些HTML代码和Javascript。IE打开手和脚图像时,浏览器不显示图像,而是
检测并
运行映像中的嵌入式代码。
之所以出现这种
情况,因为浏览器可以被用来确定在各种方式的
文件类型,如文件
扩展名JPG可以指向一个图像的JPEG格式,除了Web服务器也可以定义在HTTP头的内容类型(在这种情况下,图像/ JPG格式),但一般使用上传文件名来表示文件扩展类型。
最后,大多数Web浏览器还将检查几个字节的文件的开头,这是通常被称为签名的文件,并且,通常称为一些知名的字节序列,如PNG,JPEG,PK,JFIF等等。
到目前为止,我们已经介绍了三种
方法来让浏览器确定文件内容的类型,即通过文件本身的扩展或文件开头部分的签名来确定文件类型,或者通过服务器响应标头内容类型来确定文件类型。
然而,后来IE4介绍的第四种方法,这是通常被称为MIME嗅探或MIME类型的检测方法。因此,IE的当前版本不假定Web文件的内容类型是服务器是在HTTP header.ie浏览器的内容类型不信任的文件名或签名的推广。相反,它通过检查文件开头的256字节内容来检查文件的类型。
然而,这是通过IE只有当用户直接调用URL
下载文件,当IE是用来打开
本地存储的文件或图像的图像标签
连接(IMG)在HTML,无嗅了。
IE MIME嗅探功能的引入的错误类型要提防服务器所指示的初衷,但攻击者使用它来避免IE安全防御功能,防止浏览器自动执行下载的文件(如HTA文件)的功能。
此外,MIME嗅探还允许浏览器容忍内容类型声明中的意外错误。例如,如果服务器声明了一个文件类型的
文本/普通文件,但实际上提供了一个HTML文件。
对于常见的GIF、JPEG和PNG格式,只要文件
扩展名和内容类型与签名类型一致,浏览器将忽略MIME嗅探所获得的结果,只有当文件扩展名、内容类型和签名类型不一致时,IE才会基于MIME嗅探确定的结果。
二、MIME嗅探功能倒打一耙
现在,如何保护用户免受恶意服务器的攻击,以及如何有效地帮助不
正确配置服务器的
管理员成为Web 2面临的主要问题,如果文件的扩展、内容类型和签名不一致,那么浏览器将是内容。
所以如果一张图片开始与一些HTML代码,虽然乍看上去无害的,它实际上可能是相当危险的,因为IE图片中执行代码。这是攻击者嵌入Javascript的图像和提高的机会,使他们能够执行跨站点脚本攻击,使用这种方式,精心制作的图片在当前的访问服务器的身份验证cookie盗取受害者的使用,那么受害者服务器
登录。
三,援军到来之前
微软
公司已经认识到解决它在一个新的ie.ie8不再探头的图像版本的问题和计划,从而忽略了嵌入HTML。此外,特殊的下载,您可以
关闭的MIME嗅探功能通过指定的私人内容类型和权威的价值观,如内容类型:文本/ HTML;权威= true.then,IE会
处理文件,服务器指出型。
关键的情况下,你可以使用新的x-download-options:noopen头确保在外部网站中显示相应的文件,这意味着即使HTML文件是安全分娩,因为浏览器只是文件
保存起来。不幸的是,在IE8完全取代IE时间的其他版本,这个网站,这还不算。
四、急救措施
事实上,这是不难抵御这些复杂的文件。因为Windows XP SP2,用户可以禁用IE MIME嗅探功能是打开浏览器,选择
工具;;菜单
选项,单击Internet;
选项卡,请指定不同
区域的
网络内容安全
设置(Z);
图标选择;Internet该区域的安全级别(L);单击自定义级别按钮,最后,为了使打开文件;内容的基础上,而不是在文件扩展名的选项。然而,这将打开一些老孔在过去!
这是否能提供安全,只能通过实践来证明,我们的重点不应该是在用户中推广这项技术。相反,我们应该设法使Web服务应用程序提供安全措施来保护访问者,并确保Web服务提供者的
系统不向用户发送复杂的图像。
管理员可以使用脚本来检查,上传到自己的服务器上的文件的类型是一致的。例如,如果一个图像文件扩展名为JPG,和文件字节的签名是相同类型的开始(可以是Linux文件image.webp
命令下使用和验证使用getimagesize PHP),经过验证后,服务器可以发送文件。
这样,即使文件包含HTML代码,IE也不执行代码,但是必须注意的是,只有这样,图像安全性才受到保护,而服务器声明的内容类型必须是完全正确的。
达到绝对可靠,但是,它是必要的检查前256个字节的文件是HTML code.ie使用常见的,,,,,等标签来
识别HTML代码。如果没有标签的前256个字节的文件
发现,微软浏览器不能说明文件。
管理员也可以像这样配置服务器。当文件下载(而不是打开),服务器总是发出头内容配置:依恋;文件名=。这可以防止浏览器在网站中打开该文件,但使用本地链接的应用程序打开文件,但这会让用户感到不舒服。不幸的是,这种头重写技术只适用于那些不允许直接访问文件的用户。
鉴于此,上传文件的存储
位置不应在文件可以公开访问的位置,最好是随机命名文件。
事实上,最有效的方法是使用ImageMagick或类似的工具来
转换图像文件的格式,这样可以
删除所有的代码段的图像,这样的代码对用户的威胁是完全摆脱。
像脸谱网和推特大型网站将用户上传的
照片,但必须小心,因为它有可能打开另一个进攻方式。例如,如果某人在一个发现一个缓冲区溢出问题,攻击者可能会做一些尝试,找到一种方式使用的特殊照片。
五。总结
MIME嗅探是忠诚卫士的一种功能,即谁知道他现在突然作恶、叛逃、损害IE用户,当然是对策,但这些对策是否可靠是一个未解决的问题,目前,由图像发起的跨站点脚本攻击看起来并不常见。但世界正经历着巨大的变化:交互式网站正成为犯罪的首选
目标。
幸运的是,我们还可以使用其他浏览器,如Firefox,这是一种补救措施。当然,Firefox也执行MIME嗅探,但它并不莫名其妙地将图像解释为HTML。