我正在审核数据导出网络服务:
如果未对输入文件名进行验证(例如文件是否存在),那么Web服务可能会对具有恶意意图的人造成哪些潜在风险/漏洞?
答案 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