【问题标题】:CheckMarx - File Manipulation Vulnerability - phpCheckMarx - 文件操作漏洞 - php
【发布时间】:2020-07-21 04:26:09
【问题描述】:

我的代码本质上是使用前端通过引用 php 中的 $_FILES 变量将文件上传到服务器,并将其移动到服务器上的新文件中。下面sn -p总结代码,

$acutal_file = $_FILES['file_uploaded']['tmp_name'];
move_uploaded_file($actual_file, $target_file);

在这里,我从数据库中获取 target_file 变量。

所以,当我执行代码扫描时,它会为这个 sn-p 创建一个错误类型为“文件操作”的高漏洞,突出显示上面的 $_FILES 变量并给出消息“文件中获得的输入用于确定要写入的文件的位置,可能允许攻击者更改或破坏该文件的内容,或完全创建一个新文件。”

有谁知道如何避免这个错误?

提前致谢。

【问题讨论】:

  • 始终使用自己的文件名来保存上传的文件。永远不要使用用户输入。
  • 但我没有。我从 $_FILES 中的 tmp_name 变量中获取文件当前位置并将其移动到我自己的位置。这不是你说的吗?
  • 哦,嗯。是的,这个错误让我认为目标名称来自 $_FILES 输入......奇怪。

标签: php file-manipulation checkmarx


【解决方案1】:

缓解路径横向和文件操作的一些方法是:

  1. 验证用户的输入。仅接受有效值(白名单)。
  2. 从文件上下文中使用的任何输入中删除“..\”和“../”。
  3. 在使用语言文件时使用索引而不是文件名的实际部分。 (即,用户提交的值 5 = Indian,而不是期望用户返回“Indian”)。
  4. 实施严格的代码访问策略以限制文件的保存位置。
  5. 确保用户不能提供读取或写入文件路径的任何部分。

此信息位于https://www.checkmarx.com/knowledge/knowledgebase/path-traversal。如果您已经在使用 Checkmarx 软件,它可能会给您带来很多误报,但不要总是这样假设。我希望这会有所帮助。如果您有任何其他问题,请告诉我。

【讨论】:

    【解决方案2】:

    我建议您阅读并应用OWASP Cheat Sheet about File upload 中定义的所有规则。这是最好的规则

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2022-04-17
      相关资源
      最近更新 更多