# 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. 仅允许预定义技能（拒绝：限制用户自定义能力）
