gpt4 book ai didi

security - 使用 pathlib 检查子文件夹的安全方法

转载 作者:行者123 更新时间:2023-12-01 06:30:21 25 4
gpt4 key购买 nike

python3系列最近添加了一个名为pathlib的面向对象的路径操作库。我希望能够断言子文件是父文件的后代,以避免人们阅读/etc/passwd 等。标准库不提供有关安全使用 pathlib 的任何建议。有人可以提供一些安全使用 pathlib 的最佳实践吗?

目前,我正在做这样的事情。 root是一个 pathlib 对象,它是父文件夹。 path是一个相对于根的路径字符串。但是,它来自用户输入并且不可信。

try:
root = root.resolve()
except (FileNotFoundError, RuntimeError):
raise Exception('your root directory does not exist')

path_obj = root / path
try:
path_obj = path_obj.resolve()
except (FileNotFoundError, RuntimeError):
raise Exception('your local file does not exist')

if root not in path_obj.parents:
raise Exception('nice try')

super 迂腐的注释:实际上,我为所有三个都提出了完全相同的异常,以免泄漏文件的存在/不存在。

最佳答案

您的代码可以防止您的应用程序抵御本地文件包含或目录遍历攻击,但存在一个错误。

您也可以查看静态文件服务器的 Django 源代码以确保您的代码算法。 https://github.com/django/django/blob/cb2c3ce15443a0666646e8b60984830c38d3ecde/django/views/static.py

关于security - 使用 pathlib 检查子文件夹的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22749882/

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