路径中是否有替代斜线?

雪人

我有一个可以正确转义文件名中的斜杠(“ /)以避免路径遍历攻击的应用程序。

秘密文件具有以下路径: /tmp/secret.txt

我想通过上传具有特殊格式文件名(例如\/tmp\/secret.txt的文件来访问此文件

有没有可以使用的不带斜杠的替代语法,以便Linux可以读取此文件?

(我知道URL编码,但是由于转义是在后端完成的,因此对我没有用。)

库萨兰达

否。/无论文件名是否被转义,都不允许在文件名中使用\/

这是一出只有两个字符的那些没有在文件名中不允许,另一个是\0

这意味着您显然可以使用_tmp_secret.txt-tmp-secret.txt,或将/路径中的替换为所需的任何其他字符,以创建带有“已编码到其中”路径的文件名。但是,这样做时,您将无法对包含所选定界符字符的路径名进行编码,而该路径名中的一个或几个包含这些定界符,并且无法将其解码为原始路径名。

顺便说一下,这就是OpenBSD的端口系统如何编码软件补丁的文件名。在(例如)中,/usr/ports/shells/fish/patches我们找到名称如下的文件

patch-share_tools_create_manpage_completions_py

它来自fish外壳程序源分发中特定文件的路径名(可能是share/tools/create_manpage_completions.py)。但是这些路径名从未被解析过,仅在其中进行编码,以为补丁程序本身创建唯一的且有点可理解的文件名。现实路径包含在补丁文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章