我有一个可以正确转义文件名中的斜杠(“ /)以避免路径遍历攻击的应用程序。
秘密文件具有以下路径: /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] 删除。
我来说两句