# 002: Skill 上传安全措施 ## 状态 已采纳 (Accepted) ## 上下文 用户可以上传 ZIP 格式的技能包,需要防范常见的安全攻击。 ## 决策 ### 安全防护措施 | 威胁 | 防护措施 | |------|---------| | ZipSlip 攻击 | 检查每个文件的解压路径 | | 路径遍历 | 验证 `bot_id` 和 `skill_name` 格式 | | Zip 炸弹 | 压缩比检查(最大 100:1) | | 磁盘空间滥用 | 上传 50MB,解压后最大 500MB | | 符号链接攻击 | 禁止解压包含符号链接的文件 | ### 限制规则 ```python MAX_UPLOAD_SIZE = 50 * 1024 * 1024 # 50MB MAX_EXTRACTED_SIZE = 500 * 1024 * 1024 # 500MB MAX_COMPRESSION_RATIO = 100 # 100:1 ``` ## 结果 - 完整的上传验证链 - 防止恶意文件攻击 - 资源使用可控 ## 替代方案 1. 使用沙箱容器解压(拒绝:复杂度高) 2. 仅允许预定义技能(拒绝:限制用户自定义能力)