gpt4 book ai didi

python - 如何防止Python代码的目录遍历攻击

转载 作者:行者123 更新时间:2023-11-28 20:36:22 26 4
gpt4 key购买 nike

我需要使用 Python 从我的代码中防止目录遍历攻击。我的代码如下:

if request.GET.get('param') is not None and request.GET.get('param') != '':
param = request.GET.get('param')
startdir = os.path.abspath(os.curdir)
requested_path = os.path.relpath(param, startdir)
requested_path = os.path.abspath(requested_path)
print(requested_path)
tfile = open(requested_path, 'rb')
return HttpResponse(content=tfile, content_type="text/plain")

我需要用户像 http://127.0.0.1:8000/createfile/?param=../../../../../../../这样运行。 ./etc/passwd 这应该可以防止目录遍历攻击。

最佳答案

假设用户内容都位于

safe_dir = '/home/saya/server/content/'

/ 结尾很重要,因为 heinrichj提及以确保下面的检查与特定目录匹配。

您需要验证最终请求是否在其中:

if os.path.commonprefix((os.path.realpath(requested_path),safe_dir)) != safe_dir: 
#Bad user!

如果允许请求的路径是 save_dir 本身,如果 os.path.realpath(requested_pa​​th)+'/' == safe_dir.

我鼓励您确保用户可以在一个地方访问您想要的所有内容。

关于python - 如何防止Python代码的目录遍历攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45188708/

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