gpt4 book ai didi

python - 使用 os.path.abspath 来验证不受信任的文件名的位置是否安全?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:30 25 4
gpt4 key购买 nike

我不认为我遗漏了什么。话又说回来,我还是个新手。

def GET(self, filename):
name = urllib.unquote(filename)
full = path.abspath(path.join(STATIC_PATH, filename))
#Make sure request is not tricksy and tries to get out of
#the directory, e.g. filename = "../.ssh/id_rsa". GET OUTTA HERE
assert full[:len(STATIC_PATH)] == STATIC_PATH, "bad path"
return open(full).read()

编辑:我意识到如果文件不存在(至少在 web.py 下),这将返回错误的 HTTP 错误代码。我会解决这个问题。

最佳答案

os.path.abspath 本身是相当安全的。如果在 python -O 下运行,您的 assert 检查将被编译掉,这是一个风险。如果您的 STATIC_PATH 没有以正确的目录分隔符结尾,您可能会不小心允许一个恰好以它作为前缀的路径——例如,如果 STATIC_PATH/foo/bar,您会错误地接受位于 /foo/barbie/ 下的文件(因此,除非 STATIC_PATH 确实 以分隔符结尾,您需要稍微严格的检查以提供强有力的保证)。

关于python - 使用 os.path.abspath 来验证不受信任的文件名的位置是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com