docs(agents): 完善自动化开发流程与验证证据规范

This commit is contained in:
xuwei-fit2cloud
2026-09-24 17:02:45 +08:00
committed by ulleo
parent b06348e71a
commit d23c26eee9
6 changed files with 55 additions and 24 deletions
+8 -5
View File
@@ -15,6 +15,9 @@
- `keyExpression` 能取到真实资源 ID;
- 列表语义不会被单个资源绕过;
- 管理员、工作空间管理员和普通用户路径都明确。
- 权限表达式引用的参数缺失、解析失败或归属不匹配时必须拒绝,不能回退为直接执行处理函数。
- 子资源归属从服务端记录推导并校验完整关系(如字段 → 表 → 数据源 → 工作空间);请求中的 `ds_id`、`oid` 仅为待校验输入。不能仅验证调用者有权访问所提供的数据源,再按任意表/字段 ID 执行操作。
- 批量接口明确整批拒绝还是仅操作有权记录,并测试混合归属输入;单项、批量、同步、导出等入口应遵循相同授权边界。
- 手写查询归属时,同时校验:
- 资源存在;
- 资源属于当前工作空间;
@@ -25,7 +28,7 @@
## SQL 生成与执行
当前主流程的安全顺序不可弱化:
修改主流程时应满足以下安全顺序;需在实际入口和调用链验证,不能把本清单当作现状已安全的证明:
1. 只把允许的表和字段元数据提供给模型;
2. 解析模型返回 JSON 并提取 SQL;
@@ -45,7 +48,7 @@
## 认证、Host 与嵌入
- 不要改变 `backend/main.py` 中中间件注册顺序;`HostValidationMiddleware` 必须在外层拒绝非法 Host。
- 修改 `backend/main.py` 的中间件顺序时,验证实际请求执行顺序(不能只看注册顺序);`HostValidationMiddleware` 必须在认证/业务使用 Host 前拒绝非法值,并回归预检与正常请求。
- Host 只允许合法域名 / IPv4 / IPv6 形态,不能包含 `/`、`@` 或空白。
- 认证和助手 token 头由后端中间件与前端 request interceptor 处理;不要新增手工传递或复制 token 的路径。
- 页面嵌入协议必须保持:
@@ -60,8 +63,8 @@
- 不信任上传文件名、扩展名、MIME、sheet 名或用户提供的 `filePath`。
- 上传必须限制类型和大小,落盘使用服务端生成的文件名或 opaque ID。
- 读取用户可控路径前必须证明路径仍位于允许目录内;优先使用 `os.path.commonpath` 或仅通过内部 ID 映射真实路径。
- 下载响应使用 `os.path.basename` 或 FileResponse,不回显绝对路径。
- 读取用户可控路径前,解析真实路径后用 `os.path.commonpath` 等验证其仍位于允许目录内,或通过已授权的内部 ID 映射路径;不使用字符串前缀判断。校验到打开之间不得允许不可信方替换路径或符号链接。
- 下载前先校验权限和服务端文件实际路径的目录归属,包括符号链接解析;`os.path.basename` 只适合清理下载展示名,`FileResponse` 只负责传输,两者都不能替代路径授权。响应不回显内部绝对路径。
- Excel/CSV 解析错误不能变成可猜测的内部路径信息。
## 前端渲染
@@ -80,7 +83,7 @@
## 必测场景
修改相关逻辑时至少覆盖:
按本次涉及的入口选择相关场景;不要求每次安全改动执行下列全部类别,但必须说明未覆盖的相关风险:
- 未登录、无权限、资源不存在、跨工作空间访问;
- 管理员、工作空间管理员、普通用户、助手用户;