Skip to content

Security: lulin70/PromiseLink

Security

SECURITY.md

安全策略 — PromiseLink

本文档说明 PromiseLink 项目的安全策略、漏洞报告流程以及已实施的安全措施。 如果你发现安全漏洞,请务必按照本文档的【漏洞报告流程】进行私有披露,不要通过公开 Issue 提交。


1. 安全策略概述

PromiseLink 是一款处理用户私人关系、承诺与待办事项的应用,数据敏感性较高。我们承诺:

  • 以安全为第一优先级:在任何功能与进度冲突时,安全优先。
  • 默认安全(Secure by Default):所有敏感数据在存储与传输过程中均经过加密。
  • 最小权限原则:用户数据严格按 user_id 隔离,禁止跨用户访问。
  • 可审计:关键安全事件均有审计日志,可追溯。
  • 负责任的披露:我们尊重并保护安全研究者的合法工作,不会对善意披露提起法律诉求。

2. 支持的版本和更新策略

PromiseLink 处于快速迭代阶段,安全补丁仅适用于以下版本:

版本分支 状态 安全补丁支持 说明
main (开发主干) 持续更新 ✅ 支持 最新功能与安全修复
最新 Release tag 稳定 ✅ 支持 推荐生产部署版本
历史 Release tag 已停止维护 ❌ 不支持 请升级至最新版本

更新策略

  • 高危漏洞(CVSS ≥ 7.0):发布修复版本后,建议所有部署在 24 小时内 升级。
  • 中危漏洞(CVSS 4.0–6.9):建议在 7 天内 升级。
  • 低危漏洞(CVSS < 4.0):随下一常规版本发布修复。
  • 我们会在 CHANGELOG.md 中以 security: 前缀标注安全相关修复,并在 Release Notes 中说明影响范围与升级步骤。

3. 漏洞报告流程

3.1 请勿公开披露

请勿通过 GitHub Issue、Pull Request、公开评论、博客或社交媒体公开报告或讨论未修复的安全漏洞。 公开披露会使用户暴露在攻击风险中。

3.2 私有披露渠道

请通过以下方式私有报告漏洞:

3.3 报告内容

为帮助我们快速定位与修复,请在报告中包含:

  1. 漏洞标题与简要描述
  2. 受影响的版本(commit hash 或 Release tag)
  3. 复现步骤(越详细越好,包含必要的请求/响应样例)
  4. 影响评估(受影响的数据范围、潜在攻击场景)
  5. 建议的修复方案(如有)
  6. 你的联系方式(用于后续沟通与致谢)

3.4 协调披露流程

  1. 你提交报告后,我们会在 48 小时内 确认收到。
  2. 我们会评估漏洞等级并与你保持沟通,必要时请求补充信息。
  3. 修复完成后,我们会在 Release Notes 中致谢(除非你要求匿名),并说明漏洞影响与修复方案。
  4. 我们支持 90 天的协调披露窗口,超期后你可在我们发布修复后公开技术细节。

4. 响应时间承诺

阶段 承诺时限 说明
确认收到报告 48 小时内 工作日计算,邮件自动回复不算正式确认
初步评估与等级判定 5 个工作日内 给出 CVSS 评估与影响范围
修复方案沟通 视漏洞复杂度 高危漏洞优先处理
高危漏洞修复发布 7 天内 自确认漏洞之日起计算
中低危漏洞修复发布 30 天内 随常规版本发布
公开致谢与披露 修复发布后 在 Release Notes 中说明

如遇特殊情况(如漏洞影响范围极广、需协调多方),我们会主动与你沟通延期原因与新时间表。


5. 安全措施说明

PromiseLink 已实施以下安全措施,覆盖数据保护、认证授权、注入防护与多租户隔离。

5.1 数据加密

  • 静态数据加密:敏感字段(如微信消息原文、联系人备注等)使用 AES-256-GCM 对称加密存储,密钥通过环境变量注入,不落盘明文。
  • 传输加密:生产环境强制 HTTPS(TLS 1.2+),Nginx 配置 HSTS。
  • 密钥派生:加密密钥不直接使用用户口令,避免离线爆破。

5.2 认证与授权

  • JWT 认证:所有受保护接口要求携带有效 JWT,token 设置合理过期时间,支持刷新机制。
  • 密码存储:使用 bcrypt(带盐)哈希存储,不存明文。
  • 速率限制:登录、注册等敏感接口启用速率限制,防止暴力破解。

5.3 注入防护

  • ORM 防注入:所有数据库访问通过 SQLAlchemy ORM 与参数化查询,禁止拼接原生 SQL。
  • 输入校验:API 入参使用 Pydantic Schema 校验,拒绝非法输入。
  • LLM 输出校验:LLM 返回内容经过结构化解析与白名单校验,防止 Prompt 注入导致的越权操作。

5.4 多租户隔离

  • user_id 强制隔离:所有数据查询均带 user_id 过滤条件,从数据模型层面杜绝跨用户访问。
  • 依赖注入校验:FastAPI 依赖项统一注入当前用户身份,业务代码无法绕过。
  • 导出隔离:数据导出接口仅返回当前用户的数据,禁止指定他人 user_id

5.5 审计与监控

  • 审计日志:关键操作(登录、数据导出、权限变更)记录审计日志。
  • 异常监控:集成 Prometheus 指标采集,异常请求速率触发告警。

6. 安全最佳实践(部署建议)

6.1 部署建议

  • 基础版部署位置:基础版必须在用户本地设备运行(localhost:8000),禁止云端部署(硬约束)。用户通过 docker run 或源码安装在本地运行。
  • 数据库:PostgreSQL 单独部署,不与应用容器同网络,启用连接 TLS。
  • Redis:启用密码认证,绑定内网 IP,禁止公网访问。
  • 反向代理:Nginx 前置,启用 HSTS、CSP、X-Frame-Options 等安全头。
  • 最小化镜像:使用多阶段构建,生产镜像不含编译工具与调试符号。

6.2 密钥管理

  • 禁止硬编码:所有密钥(JWT_SECRET_KEYENCRYPT_KEYLLM_API_KEY、数据库密码等)通过环境变量或密钥管理服务注入。
  • 密钥轮换:建议每 90 天轮换一次 JWT_SECRET_KEYENCRYPT_KEY,轮换时需配合数据迁移。
  • 密钥分离:不同环境(开发/预发/生产)使用不同密钥,禁止跨环境复用。
  • .env 文件.env 文件必须加入 .gitignore,禁止提交至版本库(仓库已配置)。

6.3 网络隔离

  • 内网通信:应用与数据库、Redis 之间走内网,不暴露公网端口。
  • API 网关:生产环境建议前置 API 网关,统一鉴权与限流。
  • 出站限制:LLM API 调用等出站请求建议通过白名单代理,防止 SSRF。
  • CORS:严格配置 CORS 白名单,禁止 Access-Control-Allow-Origin: *

6.4 备份与恢复

  • 定期备份:数据库每日全量备份 + 增量备份,保留 30 天。
  • 备份加密:备份文件加密存储,密钥与备份分离保管。
  • 恢复演练:每季度进行一次恢复演练,验证备份可用性。

7. 联系方式

致谢

我们感谢以下安全研究者对 PromiseLink 项目的贡献(按报告时间排序):

(暂无)


8. 策略变更记录

日期 版本 变更说明
2026-06-17 1.0 初始安全策略发布

注意:本安全策略可能随项目演进更新,请以仓库最新版本为准。如有疑问,请通过 security@promiselink.app 联系我们。

There aren't any published security advisories