如果我重命名文件并将其移动到其他位置,文件上载表单的风险是什么

时间:2013-08-28 19:22:07

标签: php forms security file-upload

我正在阅读有关PHP的安全性内容,我现在最关心的是用户文件上传表单。我已经阅读了很多,一些用户可以通过更改扩展名甚至操纵标题和mimetype来上传看起来像其他东西的文件。我理解这一点。

但我的问题是,如果我重命名任何上传的文件并将其移动到他们不知道的目录,这将是一个什么问题。

请告诉我这是否足够,如果没有,请给我一些标题,说明我应该执行哪些额外的安全检查

非常感谢

3 个答案:

答案 0 :(得分:0)

这实际上取决于您的在线应用程序要实现的目标。如果您希望直接限制对上载文件的访问,则应设置上载区域的父文件夹的文件夹权限以阻止用户访问。然后在您的数据库中,您可以记录到路径,只通过http响应托管文件。这将确保不会访问可能有害的文件,并且用户仍然可以上传他们的感受。作为额外步骤,您可以在托管时为每个文件添加错误的文件扩展名,然后在提供文件时将其删除。

答案 1 :(得分:0)

您可以在后台运行防病毒扫描守护程序,例如avscand,已配置。用于扫描并将受感染的文件移动到隔离目录。这应该防止以后将受感染的文件传回给人们。配置自动病毒库更新。有点回来,我做了这些事情,所以调查。

将文件名简单重命名为具有安全字符的文件名就足够了;当然,每个用户分开。

答案 2 :(得分:0)

要拥有更安全的网站,需要执行以下操作:

  • 由于安全性,此列表需要经常更新。
  • upload_max_filesize设置为合理的
  • 在服务器上安装防病毒软件
  • upload_tmp_dir设置为合理的,用户可能无法访问。请参阅Setting PHP tmp dir - PHP upload not working
  • 让你的表格上传文件(你已经完成)
  • 您的表单处理程序应该:
    • 运行file命令以获取数据类型而不执行它
    • 拒绝随机文件
    • PHP解释器将验证文件大小
    • 在文件
    • 上运行病毒扫描程序
    • 重命名文件以确保文件名是干净的(如果需要引用,可以方便地将文件重命名为附件表的主键)
    • 将文件移动到客户端无法访问的位置(但移动它,因此如果稍后上传的内容同名,则不会发生任何事情)
    • 移动文件时,请确保它们没有执行权限