IE有一个特性,那就是在将一个文件展示给用户之前会首先检查文件的类型,这乍看起来并没什么问题,但实际上这是相当危险的,因为这会允许IE执行图片中的代码,即嵌入在一个图像中的JavaScript代码。引入MIME sniffing功能的初衷是用来弥补Web服务器响应一个图像请求时有可能返回错误的内容类型信息这一缺陷。
鉴于此,所上传的文件的存储位置不应该位于可公开访问的地方,并且最好为文件随机命名。
实际上,最有效的方法是使用ImageMagick或者类似的工具来转换图像文件的格式。这能从图像中清除掉所有代码段,从而彻底摆脱这些代码为用户带来的威胁。
像Facebook和Twitter这样的大型站点会对用户上传的肖像照片进行转换,但是必须小心行事,因为这有可能打开另一个攻击方式。例如,如果某人在ImageMagick中发现了一个缓冲区溢出问题,那么攻击者可能进行一番尝试,并找到一种利用特制的相片来利用该问题的方法。
五、总结
MIME sniffing功能本是IE的忠诚卫士,谁知他如今突然“倒戈”,助纣为虐来危害IE用户。对策当然是有,但是这些对策是否靠谱却是个悬而未解决的问题。目前,通过图像发动的跨站点脚本攻击看起来还不太常见,但是世界正在发生急剧的改变:交互型网站正在变成犯罪的首选目标。
好在,我们还可以使用其它的浏览器,例如Firefox等,这倒不失为一个补救措施。当然Firefox也进行MIME sniffing,但是它却不会莫名其妙地将图像作为HTML进行解释
实际上,最有效的方法是使用ImageMagick或者类似的工具来转换图像文件的格式。这能从图像中清除掉所有代码段,从而彻底摆脱这些代码为用户带来的威胁。
像Facebook和Twitter这样的大型站点会对用户上传的肖像照片进行转换,但是必须小心行事,因为这有可能打开另一个攻击方式。例如,如果某人在ImageMagick中发现了一个缓冲区溢出问题,那么攻击者可能进行一番尝试,并找到一种利用特制的相片来利用该问题的方法。
五、总结
MIME sniffing功能本是IE的忠诚卫士,谁知他如今突然“倒戈”,助纣为虐来危害IE用户。对策当然是有,但是这些对策是否靠谱却是个悬而未解决的问题。目前,通过图像发动的跨站点脚本攻击看起来还不太常见,但是世界正在发生急剧的改变:交互型网站正在变成犯罪的首选目标。
好在,我们还可以使用其它的浏览器,例如Firefox等,这倒不失为一个补救措施。当然Firefox也进行MIME sniffing,但是它却不会莫名其妙地将图像作为HTML进行解释