在Django中安全地提供上传的图像?

时间:2010-03-24 16:35:43

标签: django apache

我的Django网站允许用户上传图片。它在Apache上运行。

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

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

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

我将网站上的其他静态媒体(/ media / css)作为单独的静态应用程序提供服务。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

相关问题