taolib.symphony.workspace.security#

工作区路径安全工具。

提供标识符净化、路径包含检查和符号链接解析, 确保编码智能体仅在授权的工作区根目录内操作,防止路径遍历攻击。

Functions#

sanitize_identifier(→ str)

净化标识符,仅保留安全字符。

assert_within_root(→ None)

验证路径在根目录内,防止路径遍历。

canonicalize(→ pathlib.Path)

逐段解析符号链接,返回规范化绝对路径。

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 -- 待规范化的路径。

返回:

逐段解析后的绝对路径。