Django文件上传输入验证和安全性

时间:2009-07-07 22:50:24

标签: python django security file-upload

我正在创建一个非常简单的django上传应用程序,但我想让它尽可能安全。这是应用程序将完全是一种方式,IE。任何上传文件的人都不需要检索它。到目前为止,我已经完成了以下工作:

  1. 禁止使用某些文件扩展名(.php,.html,.py,.rb,.pl,.cgi,.htaccess等)
  2. 设置最大文件大小限制和文件名字符长度限制。
  3. 密码保护了文件上传到的目录(root拥有.htaccess,因此Web服务器不可能覆盖它)
  4. 假设apache和mod_python位于此前端并且apache本身已被保护,是否还有其他“最佳实践”的东西我应该做或考虑保护我的应用程序?

    提前致谢。

2 个答案:

答案 0 :(得分:5)

禁止文件扩展名 - 可能 - 浪费时间。 unix服务器不使用扩展 - 它使用所有权和权限。

接受上传时,您通常会重命名该文件以防止其被滥用。上传的文件应简单地命名为“upload_xxx”,其中“xxx”是提供声明的名称和数据类型的某些数据库记录的关键。

您必须实际阅读该文件并确认该文件的内容是某人声称的内容。

例如,如果他们声称要上传.JPG,您必须实际读取该文件以确保它是JPEG,而不是.EXE。

答案 1 :(得分:1)

此外,您可能希望将目标文件放在Apache的DocumentRoot目录之外,以便任何URL都无法访问它们。 .htaccess中的规则如果编写得好,则会提供一定程度的保护,但如果您正在寻求最大的安全性,只需将文件放在网络可访问的目录中。