Perufitlife/appwrite-security-skill

GitHub: Perufitlife/appwrite-security-skill

一款针对 Appwrite 平台的开源安全审计工具,能自动检测集合权限配置中 any 角色授予、users 角色过度使用、文档安全未开启等常见隐患,并通过主动探测确认数据是否真实泄露。

Stars: 0 | Forks: 0

# Appwrite 安全审计工具 [![npm](https://img.shields.io/npm/v/appwrite-security?color=red)](https://www.npmjs.com/package/appwrite-security) ![license](https://img.shields.io/badge/license-MIT-green) ![node](https://img.shields.io/badge/node-%3E%3D18-blue) ## 为什么会有这个项目 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, 上游代理, 安全报告, 开源安全工具, 数据泄露检测, 暗色界面, 权限扫描, 白盒审计, 结构化查询, 网络安全, 自动化安全, 自定义脚本, 逆向工程平台, 错误配置检测, 隐私保护