taolib.symphony.workspace.security#
工作区路径安全工具。
提供标识符净化、路径包含检查和符号链接解析, 确保编码智能体仅在授权的工作区根目录内操作,防止路径遍历攻击。
Functions#
|
净化标识符,仅保留安全字符。 |
|
验证路径在根目录内,防止路径遍历。 |
|
逐段解析符号链接,返回规范化绝对路径。 |
Module Contents#
- taolib.symphony.workspace.security.sanitize_identifier(identifier: str) str#
净化标识符,仅保留安全字符。
将不在 [A-Za-z0-9._-] 范围内的字符替换为
_, 并去除首尾的.和-以避免隐藏文件或选项参数。- 参数:
identifier -- 原始标识符(如 Linear issue 标识)。
- 返回:
净化后的安全字符串。
- taolib.symphony.workspace.security.assert_within_root(path: pathlib.Path, root: pathlib.Path) None#
验证路径在根目录内,防止路径遍历。
使用 canonicalize 逐段解析符号链接后进行比较, 同时检查路径是否等于根目录(workspace_equals_root)。
- 参数:
path -- 待检查的路径。
root -- 根目录路径。
- 抛出:
ValueError -- 路径脱离根目录或路径等于根目录。
- taolib.symphony.workspace.security.canonicalize(path: pathlib.Path) pathlib.Path#
逐段解析符号链接,返回规范化绝对路径。
参考 Elixir PathSafety.canonicalize 实现。 与 Path.resolve() 的区别:resolve() 仅解析最终目标, 本函数逐段解析,确保中间符号链接不逃逸根目录。
- 参数:
path -- 待规范化的路径。
- 返回:
逐段解析后的绝对路径。