Perufitlife/appwrite-security-skill
GitHub: Perufitlife/appwrite-security-skill
一款针对 Appwrite 平台的开源安全审计工具,能自动检测集合权限配置中 any 角色授予、users 角色过度使用、文档安全未开启等常见隐患,并通过主动探测确认数据是否真实泄露。
Stars: 0 | Forks: 0
# Appwrite 安全审计工具
[](https://www.npmjs.com/package/appwrite-security)  
## 为什么会有这个项目
Appwrite 拥有一个强大但容易被误用的权限模型:集合可以将操作(`read`、`list`、`create`、`update`、`delete`)授权给 `any`、`users`、`team:` 或 `user:` 等角色。我经常看到以下三种模式:
- **`read` 或 `list` 操作使用了 `any` 角色** — 集合完全公开。任何人都可以在未经身份验证的情况下导出所有文档。
- **`users` 角色使用过于宽泛** — 任何已注册的用户(包括自行注册的匿名用户)都可以读取或写入整个集合。
- **文档安全已禁用** — 集合级别的权限将应用于所有文档。一条宽泛的规则就会暴露所有数据。
这个审计工具只需一条命令,就能找出你的项目中所有数据库/集合存在的上述所有问题。
## 安装与运行
```
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 \
APPWRITE_PROJECT_ID=your-project-id \
APPWRITE_API_KEY=your-server-key \
npx appwrite-security --html report.html
```
或者:
```
npx appwrite-security \
--endpoint https://cloud.appwrite.io/v1 \
--project xxx \
--key xxx \
--html report.html
```
## 检查内容
| # | 检查项 | 严重程度 |
|---|---|---|
| 1 | 权限授予了 `any` 角色(任何人都可以执行操作) | **CRITICAL** |
| 2 | 权限授予了 `users` 角色(所有已注册用户均通过验证) | HIGH |
| 3 | 受权限保护的集合未开启文档安全 | HIGH |
| 4 | 基于团队的权限缺乏角色 specificity | MEDIUM |
| 5 | OAuth2 提供者配置错误 | MEDIUM |
| 6 | 邮箱认证未启用验证 | MEDIUM |
## 主动探测
默认:开启。在检测到 `read("any")` 或 `list("any")` 权限后,审计工具会向 `/v1/databases/{db}/collections/{col}/documents?queries[]=limit(1)` 发送一个**匿名 GET** 请求。如果返回了文档,该发现将被标记为 `confirmed: true`,并附带行数、可见列数和泄漏的字节数。
`--no-probe` 参数可禁用实时获取(仅限被动元数据模式)。
## 如何获取 API 密钥
1. 打开你的 Appwrite 控制台 → 项目设置 → API 密钥 → "Create API Key"
2. 所需权限范围:`databases.read`、`collections.read`、`projects.read`
3. 立即复制密钥(Appwrite 仅显示一次)
该密钥仅用于本次运行的元数据读取。绝不会被持久化保存。
## 许可证与源码
MIT。开源地址:https://github.com/Perufitlife/appwrite-security-skill
针对 Supabase,请参见 https://github.com/Perufitlife/supabase-security-skill
针对 PocketBase,请参见 https://github.com/Perufitlife/pocketbase-security-skill
## 集成模式参考
请参阅 [`rotatepilot-skyx-sandbox`](https://github.com/Perufitlife/rotatepilot-skyx-sandbox),查看合作伙伴如何在单个静态页面中使用我们公开 REST API 的实时演示——该页面构建于 2026 年 5 月 12 日,旨在响应某航空平台的入站合作请求。我们为 `appwrite-security` 集成采用了相同的 JSON 契约 / CORS / 边缘服务架构。
## 姐妹 AI 文本检测工具
如果你的团队使用 AI 撰写外联邮件、PR 描述或社交媒体帖子,[aitells](https://aitells.vercel.app) 生态系统可以在内容发布前识别出 AI 的痕迹:
- [`@perufitlife/aitells-mcp`](https://www.npmjs.com/package/@perufitlife/aitells-mcp) — 适用于 Claude Code / Cursor 的 MCP 服务器。提供 `detect_ai_tells` + `humanize_text` 原生工具。
- [`Perufitlife/aitells-action`](https://github.com/Perufitlife/aitells-action) — 用于扫描 PR 标题/正文/提交信息中 AI 模式的 GitHub Action。会发布友好的摘要评论。
- [aitells.vercel.app](https://aitells.vercel.app) — 免费检测工具 + $19 终身人性化改写(限前 100 名购买者)
标签:API安全, Appwrite, Atomic Red Team, BaaS安全, CISA项目, DevSecOps, GNU通用公共许可证, JSON输出, MITM代理, Node.js, npm包, SaaS安全, SMB, 上游代理, 安全报告, 开源安全工具, 数据泄露检测, 暗色界面, 权限扫描, 白盒审计, 结构化查询, 网络安全, 自动化安全, 自定义脚本, 逆向工程平台, 错误配置检测, 隐私保护