【问题标题】:Upload to random named directories, is it enough (security-wise)?上传到随机命名目录,是否足够(安全方面)?
【发布时间】:2018-11-06 16:50:24
【问题描述】:

所以我构建了一个表单,让用户可以将文件(在扩展白名单中)上传到根目录下的另一个目录下的随机命名目录。出于技术原因,随机名称现在被写在 html 页面中,但仅在页面存在时才在代码中可见。如果用户刷新页面,名称就会改变。只有随机目录名本身可见,而不是 itpath 中的整个上传。

data-name="<?php echo uniqidReal(); ?>" // outputs like 'd91806dbde743568'

然后 php 使用该名称来创建将保存文件的目录,例如 https://www.acme.com/mydir/d91806dbde743568/file.mp3。然后,整个 url 将被发送一次给表单的接收者。

'mydir' 的内容在-Indexes 下,所以任何人都无法猜测其中随机命名的目录的名称。

现在我的问题是:这足以避免安全问题吗?例如,是否可以上传一个包含一些恶意代码的屏蔽文件,该恶意代码一旦上传就可以读取目录并将其发回信息或执行其他操作?

我应该以其他方式加强安全级别吗?

【问题讨论】:

  • 为什么需要在上传前创建目录?
  • 避免文件冲突。

标签: php security file-upload filesystems


【解决方案1】:

这不是最好的方法,因为文件夹的名称可以包含 ../ 之类的字符

在我看来最好在服务器上创建一个随机文件夹而不从用户那里接收数据

【讨论】:

  • 嗯,但在我的例子中,名称不是基于用户的输入。它由使用random_bytes + microtime 组合的特定函数生成
  • 用户可以更改此字段
  • 嗯,怎么样?这不是一个字段。
  • 在 Chrome DevTools 中。是的,它的属性。
  • 好的,是的。不,这不是一个字段,该数据应用于 div,但是是的,您可以通过控制台更改它,我没有考虑过,好点。
猜你喜欢
  • 1970-01-01
  • 2012-02-05
  • 2012-07-02
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
相关资源
最近更新 更多