Perufitlife/pocketbase-security-skill
GitHub: Perufitlife/pocketbase-security-skill
一款针对PocketBase的安全审计工具,通过检测规则配置失误并主动探测确认数据泄露,帮助开发者在部署前发现和修复常见的安全隐患。
Stars: 2 | Forks: 0
# PocketBase 安全审计员
[](https://www.npmjs.com/package/pocketbase-security)  
## 为什么需要这个工具
PocketBase API 规则编写起来很容易,但也极容易被设置得过于宽松。我经常看到以下三种模式:
- **空规则** — 将 `listRule` 留空意味着该集合完全公开。任何人都可以在未经身份验证的情况下列出所有记录。
- **`@request.auth.id != ""`** — 看似具有限制性,但实际上允许任何已登录的用户(包括自行注册的匿名用户)读取或写入整个集合。
- **`true` 字面量** — 本地开发时遗留的产物,其计算结果为“始终允许”。
此审计工具可以通过一条命令找出所有集合中存在的这三种情况。
## 安装与运行
```
npx pocketbase-security \
--url https://my.pocketbase.io \
--email admin@me.io \
--password $PB_ADMIN_PASS \
--html report.html
```
或通过环境变量运行:
```
POCKETBASE_URL=https://my.pb.io \
POCKETBASE_ADMIN_EMAIL=admin@me.io \
POCKETBASE_ADMIN_PASSWORD=$PB_ADMIN_PASS \
npx pocketbase-security --html report.html
```
## 检查内容
| # | 检查项 | 严重程度 |
|---|---|---|
| 1 | API 规则为空(该操作的集合完全公开) | **严重 (CRITICAL)** |
| 2 | API 规则为 `@request.auth.id != ""`(任何已登录用户均可通过) | 高 |
| 3 | API 规则包含 `true` 字面量(绕过所有检查) | 高 |
| 4 | Auth 集合开启了开放注册 + 宽松的创建规则(组合漏洞) | 高 |
| 5 | 启用了 OAuth2 提供程序,但未设置重定向 URL 白名单 | 中 |
| 6 | Email 身份验证未强制要求验证 | 中 |
| 7 | S3 存储存在 debug 级别日志泄露风险 | 低 |
每项发现都附带了一段修复代码片段,您可以直接粘贴回 PocketBase 的管理后台 UI 中。
## 主动探测
默认:开启。在识别出可疑集合(空规则、宽松的身份验证、危险字面量)后,审计工具会向 `/api/collections/{name}/records?perPage=1` 发送一个**匿名 GET** 请求。如果请求返回数据,该发现将被标记为 `confirmed: true`,并附带一个样本,显示泄露的行数、可见列以及泄露的字节数。
传入 `--no-probe` 可以跳过实时请求(仅限被动模式,根据规则元数据进行推断)。
## 输出
- **HTML 报告** — 独立文件(约 25KB,通过 CDN 引入 Tailwind + Chart.js)。顶部横幅显示 N 个疑似泄露中有 X 个已被实时确认。当探测成功时,每张发现卡片都会显示一个红色的“CONFIRMED LEAK”(已确认泄露)区块。
- **JSON** — 完整的结构化发现结果(未指定 `--html` 标志时的默认标准输出)。
## 如何获取管理员密码
您在初始化 PocketBase 时已创建过该密码。如果忘记了,可以在宿主机上通过 PB CLI 重置:`./pocketbase admin update `。
该密码仅用于本次运行的管理员身份验证调用(collections 端点需要管理员 token)。审计工具绝不会持久化保存该密码。
## 集成模式参考
请参阅 [`rotatepilot-skyx-sandbox`](https://github.com/Perufitlife/rotatepilot-skyx-sandbox),查看合作伙伴如何在单个静态页面中使用我们的公共 REST API 的实时演示——该页面构建于 2026 年 5 月 12 日,旨在响应航空平台合作的入站请求。我们在此使用的就是与 `pocketbase-security` 集成相同的 JSON 契约 / CORS / 边缘服务方案。
## 许可证
MIT。免费开源。由 [@Perufitlife](https://github.com/Perufitlife) 构建。
关于 Supabase,请参阅姊妹工具:https://github.com/Perufitlife/supabase-security-skill
标签:API安全, BaaS, CISA项目, DevSecOps, GNU通用公共许可证, JSON输出, MITM代理, Node.js, npx, OAuth2安全, PocketBase, S3安全, 上游代理, 代码安全, 后端即服务, 多模态安全, 安全报告, 安全测试, 密码管理, 开源, 攻击性安全, 无线安全, 暗色界面, 未授权访问, 权限配置, 漏洞枚举, 空规则, 网络安全, 自定义脚本, 规则检测, 越权访问, 隐私保护