Django的文件上传输入验证和安全性(Django file upload input valid

2019-09-17 22:05发布

我创建一个非常简单的Django上传应用程序,但我想让它尽可能的安全。 这是应用程序将是完全的一种方式,IE浏览器。 任何人谁上传文件将永远不会有找回它。 到目前为止,我已经做了以下情况:

  1. 禁止某些文件扩展名(.PHP和.html,的.py,.RB,特等,的CGI,htaccess的,等等)
  2. 设置最大文件大小限制和文件名字符长度的限制。
  3. 受密码保护的文件上传到该目录(以root拥有的.htaccess所以Web服务器不可能覆盖它)

假设Apache和mod_python的是在这个前端和阿帕奇本身已经被保护,是否有其他的“最佳实践”的事情我应该做或考虑到保护我的应用程序?

提前致谢。

Answer 1:

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

在接受上传,你经常会重命名文件,以防止它被滥用。 上传的文件应该被简单地命名为“upload_xxx”其中“xxx”是一个提供所要求的名称和数据类型的一些数据库记录的键。

你有实际读取文件,确认文件的内容是什么人声称它是。

举例来说,如果他们声称上传.JPG,你必须实际读取文件,以确保它是一个JPEG,而不是一个.EXE。



Answer 2:

此外,您可能希望将目标文件以外的Apache的DocumentRoot目录,使他们不受任何URL访问。 在.htaccess规则提供了如果他们写得好了一定的保护,但如果你正在寻找最大的安全性,只需将文件放在远离网络可达的目录。



文章来源: Django file upload input validation and security