2010-03-24 64 views
1

我的Django网站允许用户上传图片。它在Apache上运行。在Django中安全地上传图片?

文件通过FileUpload表单上传。上传文件的文件夹在Django项目之外,并受到保护as described here,即该文件夹具有755个权限,文件具有644个权限。

我现在想为用户提供图像 - 但我需要安全地执行此操作,以便可执行脚本不会运行,因此用户无法删除目录中的所有图像。

我的问题是,如何以安全的方式向用户提供上传的图像?我可以直接从该文件夹中以静态媒体的形式安全地使用这些权限吗?或者我应该将它们复制到另一个具有不同权限的目录中,并从那里提供它们?

我正在为站点上的其他静态媒体(/ media/css)提供独立的静态应用程序。

谢谢!

+0

请认真解释你如何为你的django应用程序和你的静态文件提供服务。 – 2010-03-24 22:47:12

+0

已编辑解释更多,请让我知道任何其他信息,这将有所帮助。 – AP257 2010-03-25 11:09:06

回答

0

执行此操作的方法是将Web服务器配置为以预期的名称和正确的图像内容类型提供文件。通过PIL/Pillow使用Django的ImageField进行某种级别的验证,即上传的文件是图像。对于此目录,禁用webserver功能,如自动生成目录索引,自动执行文件系统中的所有操作,猜测MIME类型以及运行cgi脚本。