gpt4 book ai didi

php - 使用面向 Web 的应用程序防止目录遍历 - 正则表达式是防弹的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:00:18 25 4
gpt4 key购买 nike

我现在需要允许用户下载根据 URL 动态确定的文件。在开始下载之前,我需要进行一些身份验证,因此下载必须先通过脚本运行。所有文件都将存储在网络根目录之外,以防止手动下载。

例如,以下任何一个都可以是下载链接:

基本上,文件夹深度可以变化。

为了防止目录遍历,比如: http://example.com/downloads/../../../../etc/passwd我显然需要对 URI 进行一些检查。 (注意:我没有将此信息存储在数据库中的选项,必须使用 URI)

以下正则表达式在确保用户不会输入可疑内容方面是否是防弹的:

preg_match('/^\/([-_\w]+\/)*[-_\w]+\.(zip|gif|jpg|png|pdf|ppt|png)$/iD', $path)

我还有哪些其他选项可以确保 URI 正常?可能在 PHP 中使用 realpath?

最佳答案

我建议使用 realpath()将路径转换为绝对路径。然后您可以将结果与允许目录的路径进行比较。

关于php - 使用面向 Web 的应用程序防止目录遍历 - 正则表达式是防弹的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611520/

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