dmed05/ai-inspection-report-demo

GitHub: dmed05/ai-inspection-report-demo

一个安全的 AI 检测报告演示应用,通过 fixture 模式和受保护的参考 API 展示面向公众的安全 API 设计实践。

Stars: 0 | Forks: 0

# AI 检测报告演示 一个安全的、模拟的 AI 辅助检测工作流演示。 公开应用完全以 fixture 模式运行:它不接受真实的客户记录,不上传私人媒体文件,也不消耗 API 额度。服务器还包含一个受保护的参考 API,用于演示基于所有者作用域的记录、受限的 CORS、速率限制、保留策略和脱敏日志。 ## 架构 ``` browser ├─ GET /api/demo/reports ──────────────> synthetic fixtures └─ protected /api/reports ├─ allowed-origin check ├─ bearer token → owner mapping ├─ per-client rate limit ├─ input validation └─ owner-scoped in-memory store ``` ## 本地运行 需要 Node.js 20 或更高版本。 ``` npm test npm start ``` 打开 。 默认配置仅公开 fixture 数据。要在本地测试受保护的路由: ``` DEMO_API_TOKENS='reviewer:local-development-token' \ ALLOWED_ORIGINS='http://localhost:5050' \ npm start ``` 示例: ``` export DEMO_TOKEN='the token configured in DEMO_API_TOKENS' curl -H "Authorization: Bearer ${DEMO_TOKEN}" \ http://localhost:5050/api/reports ``` ## 安全决策 - 公开演示无需 OpenAI 或云凭证。 - 不包含任何生产环境的姓名、地址、照片、提示词或报告。 - 公开生成是确定性的且由 fixture 支持。 - 受保护的记录根据经过身份验证的 token 进行选择,而不是客户端提供的用户 ID。 - 除非请求来源被明确允许,否则拒绝 CORS。 - 日志会对 bearer token 和常见的凭证格式进行脱敏处理。 - 记录将根据 `RETENTION_HOURS`(默认为 24)过期。 - 本地和 CI 发布门禁会拒绝密钥和敏感文件名。 本仓库是一个参考实现,而不是一个完整的身份验证系统。生产环境部署应将静态 token 和内存存储替换为身份提供程序和加密数据库。 ## 测试覆盖率 测试涵盖: - 仅限 fixture 的公开访问; - 缺失和无效的身份验证; - 跨所有者记录隔离; - 受限的 CORS; - 请求速率限制; - 保留策略清理; - 凭证脱敏。 ## 许可证 MIT
标签:API设计, CORS, GNU通用公共许可证, MITM代理, Node.js, Syscall, Web开发, 安全实践, 数据可视化, 演示项目, 自定义脚本, 限流