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

sei*_*ryu 4 python security django file-upload

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

  1. 禁止某些文件扩展名(.php,.html,.py,.rb,.pl,.cgi,.htaccess等)
  2. 设置最大文件大小限制和文件名字符长度限制。
  3. 密码保护文件上传到的目录(root拥有.htaccess权限,因此Web服务器可能无法覆盖它)

假设apache和mod_python位于此前端,并且apache本身已得到保护,那么我应该采取或考虑采取其他任何“最佳实践”措施来保护我的应用程序吗?

提前致谢。

S.L*_*ott 7

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

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

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

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

  • 感谢您提供的信息,这是验证文件类型的好方法。禁止扩展名的背后原因不一定是专门禁止该文件类型,而是要确保如果用户通过某种方式通过apache访问该文件,则该apache本身不会尝试执行该文件。IE浏览器 如果他们上载.php脚本,然后浏览到http://example.com/upload/files/user_uploaded_script.php,则apache将运行该.php脚本,就好像它是普通的php页面一样。 (2认同)