【问题标题】:PHP solution for validating file path用于验证文件路径的 PHP 解决方案
【发布时间】:2012-12-27 08:32:01
【问题描述】:

我需要验证传递的文件路径,然后才能将其写入磁盘并为其创建新的目录结构。例如,我们有$path = "/uploads/base/../../user_new_dir/img.jpg"。这是不正确的路径,因为"/.." ("/uploads/base" - 允许保存目录,"/user_new_dir/img.jpg" - 用户定义的路径和文件名)。

我不能使用realpath($path),因为它只适用于现有文件。我不能使用realpath(dirname($path)),因为我们可能会创建新的文件夹来保存文件。

我寻找脚本,它检查所有可能的情况。我担心我会错过像'.' 字符的多字节表示或其他意想不到的方式,这可能会导致安全问题。您能否建议在任何框架或 cms 中适当地实施我的任务,以便我研究它?

【问题讨论】:

  • 为什么用户要传递文件路径?
  • 最佳方式:不要根据用户提供的信息编写文件。组成你自己的随机文件名。
  • @deceze - 还具有不会无意中使用户覆盖文件的优势。
  • 为什么不直接检查字符串中的..
  • 这是为私人管理员部分制作的,因此我们可以将上传的文件保存在网络服务器本地文件系统之外,但我们会将它们发送到主服务器。正因为如此,我们需要支持可变目录结构。还有其他保护措施,例如允许的 IP 和检查是否允许上传文件夹。

标签: php validation filtering filepath


【解决方案1】:

看看这个:https://stackoverflow.com/a/4050444/108544

该函数对路径字符串进行操作,如果文件系统上实际上不存在目标路径,该函数也应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-16
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多