Skip to content
📌知识点小结
  • 路径就是“文件在目录树中的位置”,用一串文件夹名 + 文件名表示。
  • 绝对路径从根目录出发,位置唯一、写全了不会有歧义(Windows 以盘符开头,Linux 以 / 开头)。
  • 相对路径从“当前所在文件夹”出发,用 . 表示当前目录、.. 表示上一级目录。
  • Windows 用反斜杠 \ 分隔,Linux 用正斜杠 /;网址用的是正斜杠。
  • 安全里路径穿越(../)、Web 根目录、挂载路径都依赖对路径的理解。
自测一下

0.6 路径:绝对路径与相对路径

第〇篇「零基础预科」免费。这一篇解决一个问题:怎么用一行文字,精确告诉电脑某个文件在哪。

一、路径是什么

文件在目录树里的"位置描述"就是路径(Path) ,它把"从起点到文件经过的文件夹"一个个列出来。

  • Windows 用反斜杠 \ 分隔:

    C:\Users\yibo\Desktop\报告.txt
  • Linux 用正斜杠 / 分隔:

    /home/ubuntu/gysec/docker-compose.yml

网址 https://gysec.top/wiki/abc 用的也是正斜杠 /,和 Linux 一致。

二、绝对路径:从根目录一路写全

绝对路径从最顶层的根目录出发,把经过的每一层都写出来,因此位置唯一、没有歧义。

  • Windows 以盘符开头:C:\Windows\System32\drivers\etc\hosts
  • Linux 以 / 开头:/etc/openresty/gysec/users.json

无论你"当前站在哪个文件夹",绝对路径指向的都是同一个地方。

三、相对路径:从"当前所在文件夹"出发

相对路径不写根,而是以你当前的工作目录为起点来描述。两个特殊符号非常重要:

符号含义
.当前目录(现在站的文件夹)
..上一级目录(父文件夹)

举例,假设当前在 /home/ubuntu/gysec/docs/

相对路径实际指向
index.md/home/ubuntu/gysec/docs/index.md
./learn/a.md当前目录下 learn 文件夹里的 a.md
../deploy/publish.ps1上一级 gysec 下 deploy 里的 publish.ps1
../../etc/hosts连续上两级再进 etc(可能已跳出项目)

四、安全里为什么路径极其重要

  1. 路径穿越(目录遍历):如果程序把用户输入直接拼进文件路径,又没过滤 ..,攻击者就能用 ../../etc/passwd 跳出受限目录,读到系统敏感文件;
  2. ZipSlip:压缩包里夹带 ../ 路径,解压时把恶意文件写到系统目录(kkFileView 那类漏洞就涉及);
  3. Web 根目录:Web 服务只把某个文件夹(如 /var/www/gysec)对外暴露,理解"根"才能理解哪些文件本不该被访问;
  4. Docker 挂载、反弹 IP、配置路径:复现漏洞时几乎处处要写路径。

一个直观的防御原则:处理文件路径时,先把它规范化(解析掉所有 ...),再确认结果仍位于允许的目录内,否则拒绝。

五、本篇小结

  • 路径 = 文件在目录树中的位置;Windows 用 \、Linux 和网址用 /
  • 绝对路径从根出发、唯一无歧义;相对路径从当前目录出发,用 ...
  • 安全上:路径穿越 ../、ZipSlip、Web 根目录、挂载路径都建立在路径概念之上。
  • 防御:规范化路径并校验其仍在允许目录内。

下一篇 0.7 回到图形界面,系统梳理鼠标、窗口、菜单、对话框的标准操作。