-1

我正在审查一个数据导出 Web 服务,该服务:

  1. 将文件名作为输入(只是名称,而不是完整路径)
  2. 使用目录字符串常量连接文件的完整路径
  3. 压缩文件
  4. 返回位于 Web 可访问目录中的输出 zip 文件的 url

如果没有对输入文件名进行验证(例如文件是否存在),那么 Web 服务可能对有恶意的人有哪些潜在风险/漏洞?

4

1 回答 1

3

说你的directory字符串常量是"/tmp/files"

攻击者可以提供"../../etc/passwd"

>>> import os
>>> os.path.abspath(directory + "../../etc/passwd")
'/etc/passwd'

至少,您希望将输入剥离到基本名称

>>> os.path.join("/tmp/files", os.path.basename("../../etc/passwd")
/tmp/files/passwd
于 2013-10-22T06:24:53.057 回答