当前位置:  开发笔记 > 编程语言 > 正文

Ruby On Rails中的安全文件上载

如何解决《RubyOnRails中的安全文件上载》经验,为你挑选了1个好方法。

我构建了一个使用Paperclip的照片库,并使用validates_attachment_content_type验证内容类型.

该应用程序在Passenger的共享主机上运行.

是否可以绕过验证并从public/pictures目录运行恶意脚本?如果是这样,我可以做些什么来避免恶意脚本运行或上传?



1> bobince..:

是否可以绕过验证并从public/pictures目录运行恶意脚本?

是.您可以拥有一个完全有效的可渲染图像文件,该文件还包含带脚本注入的HTML.感谢虚假内容嗅探,IE,你毁了一切.

有关摘要,请参见http://webblaze.cs.berkeley.edu/2009/content-sniffing/.

如果是这样,我可以做些什么来避免恶意脚本运行或上传?

并不是的.从理论上讲,您可以检查HTML标记的前256个字节,但是您必须知道浏览器内容嗅探的具体细节,并保持全面和最新的非首发.

如果您正在处理图像并自行重新保存,可以保护您.否则,请执行以下一项或两项操作:

仅提供来自不同主机名的用户上传文件,因此他们无权访问cookie/auth详细信息,这些信息允许将注入的脚本放入XSS进入您的站点.(但要注意非XSS攻击,如一般JavaScript /插件漏洞)

通过包含"Content-Disposition:attachment"标题的服务器端脚本提供用户上传的文件,因此浏览器不会尝试内联查看页面.(但是看看Flash的旧版本忽略它对于Flash文件)这种方法也意味着你不必在用户提交的文件名下存储服务器文件系统上的文件,这可以节省一些沉重和难以获得的文件 - 正确的文件名验证工作


不,压缩流中的任何字节都将被重新压缩和丢失.在制作较小版本的图像时,任何其他结构(例如注释字段)都应该被丢弃.从理论上讲,如果您事先知道确切的大小调整设置,您可能能够制作一个图像,当调整大小和压缩时,最终会在结果流中使用类似HTML的字节,但这可能是一个非常非常困难的攻击,可能几乎是不可行的.我当然没听说过它发生过.
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有