【发布时间】: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