0

我正在使用普通代码上传文件,但是当我使用该功能时move_uploaded_file,它会显示图像中的错误。

错误截图

  1. 第 1 点说:这个值可以由用户控制。
  2. 第 2 点说:传播污染值
  3. 第 3 点说:污点值用于执行安全敏感操作

查看我的代码:

if (!empty($_FILES["attachment"]["name"]) || strpos($file_name, '../') !== true) {
  $uploadStatus = 1;
  $files_folder = 'files';
  $target_dir = dirname(__FILE__).'/'.$files_folder.'/';
  $fileName = basename($_FILES["attachment"]["name"]);
  $targetFilePath = $target_dir . $fileName;
  $imageFileType = strtolower(pathinfo($targetFilePath, PATHINFO_EXTENSION));
  if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "pdf") {
    $uploadStatus = 0;
    $img_status = 1;
  } else if (move_uploaded_file($_FILES['attachment']['tmp_name'], $targetFilePath)) {
      $uploadedFile = $targetFilePath;
  } else {
      $uploadStatus = 0;
  }
}
4

1 回答 1

1

这是一个误报。SonarQube 错误地将$_FILES['attachment']['tmp_name']其视为用户控制的数据。根据PHP 文档$_FILES['userfile']['name']是用户控制的,但$_FILES['userfile']['tmp_name']不是。

您可以在 SonarQube 中将此问题标记为误报。

该问题已在 SonarQube 8.6 中修复。

于 2021-02-11T08:28:23.430 回答