不验证此Web服务中的用户输入有哪些风险?

时间:2013-10-22 05:31:00

标签: python web-services security

我正在审核数据导出网络服务:

  1. 将文件名作为输入(只是名称,而不是完整路径)
  2. 使用目录字符串常量
  3. 连接文件的完整路径
  4. 拉链文件
  5. 将url返回到输出zip文件,该文件位于Web可访问目录
  6. 如果未对输入文件名进行验证(例如文件是否存在),那么Web服务可能会对具有恶意意图的人造成哪些潜在风险/漏洞?

1 个答案:

答案 0 :(得分: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