Yet*_*eti 6 linux filenames slash
我有一个应用程序可以正确转义文件名中的斜杠(“/”,以避免路径遍历攻击。
秘密文件的路径如下:
/tmp/secret.txt
我想通过上传具有特殊文件名的文件来访问此文件(类似于\/tmp\/secret.txt)
是否有任何不带斜杠的替代语法可以让 Linux 读取该文件?
(我知道 URL 编码,但由于转义是在后端完成的,这对我来说没有用。)
不可以。文件名中不允许出现 ,无论是否/转义。\/
它是文件名中不允许使用的两个字符之一,另一个是\0.
这意味着您显然可以使用_tmp_secret.txtor -tmp-secret.txt,或将/路径中的 替换为您想要的任何其他字符,以创建带有“编码到其中”的路径的文件名。但这样做时,您不能对在一个或多个路径组件中包含所选分隔符的路径名进行编码,并期望将其解码为原始路径名。
顺便说一句,这就是 OpenBSD 的 ports 系统对软件补丁的文件名进行编码的方式。在(例如)中,/usr/ports/shells/fish/patches我们找到名称如下的文件
patch-share_tools_create_manpage_completions_py
Run Code Online (Sandbox Code Playgroud)
它来自fishshell 源代码分发中特定文件的路径名(可能share/tools/create_manpage_completions.py)。然而,这些路径名永远不会被解析,并且编码只是为了为补丁本身创建唯一且有点可理解的文件名。真实路径包含在补丁文件中。
| 归档时间: |
|
| 查看次数: |
7415 次 |
| 最近记录: |