Go 1.24 - os.Root 锁定工作目录
Go 1.24 - os.Root 锁定工作目录
建议点击 查看原文 查看最新内容。
原文链接: https://typonotes.com/posts/2025/05/16/os-root-in-go124/
os.Root
可以锁定工作目录。 使用户无法打开目录外的文件,例如 ../../../etc/passwd
。 可以算一种 安全保护
最重要的是 强制约束用户, 限制用户行为, 检查计划外的使用逻辑 。 免得和煞笔瞎掰扯, 浪费时间。
- 使用
root, _ := os.OpenRoot(basedir)
锁定工作目录 - 以后的所有操作都要基于
root.Xzzzz()
展开 root.OpenFile(path)
在打开文件之前, 会判断 文件路径 的合法性。 basedir 之外的路径拒绝访问。path
可以是绝对路径。path
也可以是基于basedir
的相对路径。
- 美中不足: 不支持
root.ReadFile(path)
这样的快捷 API。 还是需要分成root.OpenFile
和io.ReadAll
。 有点不习惯了。
Code Demo
|
|
- 原文链接:https://typonotes.com/posts/2025/05/16/os-root-in-go124/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。
