上传文件问题 - 重构代码以不从受污染的、用户控制的数据构建路径

问题描述

我使用普通代码上传文件,但是当我使用函数 from multiprocessing import Process from time import sleep def func1(): a=1 while True: print("func1 up and running",a) a+=1 sleep(1) def func2(): A=1 while True: print("func2 up and running",A) A+=1 sleep(1) if __name__ == '__main__': proc1 = Process(target=func1()) proc1.start() proc2 = Process(target=func2()) proc2.start() 时,它显示了图像中的错误

error screenshot

  1. 第 1 点表示:该值可由用户控制。
  2. 第 2 点表示:传播污点值
  3. 第 3 点说:污点值用于执行安全敏感的 操作

查看我的代码

move_uploaded_file

解决方法

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

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

此问题已在 SonarQube 8.6 中修复。