Skip to content

Security: damingishere-coder/AI-JobPilot

Security

SECURITY.md

安全与隐私说明

AI JobPilot(投递牛马)默认作为个人电脑上的本地工具使用。项目涉及招聘平台登录状态、简历、AI 模型密钥和本地岗位数据,请在安装、排错和提交 Issue 时优先保护个人信息。

支持范围

版本 安全修复状态
当前 main 与最新版本 ✅ 接受安全修复
历史版本和未合并分支 ⚠️ 不保证持续修复

报告安全问题

请不要在公开 Issue、Pull Request、Discussion 或截图中发布:

  • API Key、Token、Cookie、账号密码
  • 真实简历、手机号、邮箱、聊天记录
  • 浏览器用户目录、登录二维码或会话信息
  • 可直接访问个人数据的数据库和日志

发现安全问题时:

  1. 优先使用仓库 Security 页面中的私密漏洞报告入口(如果该入口已启用)。
  2. 如果私密入口不可用,可创建一个不包含漏洞细节和敏感数据的 Issue,仅说明“需要私下报告安全问题”。
  3. 在获得安全沟通方式前,不要上传利用代码、真实密钥、数据库或完整日志。
  4. 请说明受影响版本、模块、影响范围和经过脱敏的复现条件。

本地使用原则

  • 不建议把项目直接部署到公网供多人共用。
  • 前端、后端和 Chrome Bridge 应只在受信任的本机环境中运行。
  • 不要关闭人工确认后再进行大规模自动投递。
  • 不要实现或使用绕过验证码、登录验证、平台风控和投递限制的功能。
  • 不要使用来源不明的浏览器配置、扩展包、脚本或数据库文件。

禁止提交的文件与数据

请确保以下内容始终只保存在本机:

  • .env.env.local 和其他真实配置文件
  • 账号、密码、Cookie、Token、API Key
  • db/getjobs.db 及其备份
  • data/logs/output/ 中的个人运行数据
  • Chrome 用户数据目录、浏览器缓存和 Playwright 缓存
  • 简历图片、聊天截图、求职记录和其他个人敏感资料

如果敏感信息曾经被提交到 Git:

  1. 立即撤销或轮换相关密钥、Cookie 和账号会话。
  2. 仅删除最新文件并不足以清除历史记录,应进一步清理 Git 历史。
  3. 检查 Fork、Actions 日志、Release 和缓存中是否仍有副本。

Chrome Bridge 安全边界

  • Chrome Bridge 面向本地工作台和声明的招聘平台页面工作。
  • 扫描岗位时,只应向本地后端提交完成业务所需的结构化岗位信息。
  • 不应把平台 Cookie、账号密码、完整页面存档或浏览器缓存写入仓库。
  • 消息来源、页面域名和本地服务地址必须保持校验。
  • 投递任务必须进入待确认状态,并由用户明确确认后执行。
  • 登录过期、验证码、异常页和风控提示应停止流程并给出诊断,而不是尝试绕过。

数据库与日志

  • 默认数据库路径为 db/getjobs.db,该目录应由 .gitignore 忽略。
  • Flyway 脚本只管理表结构,不应包含真实个人数据。
  • 日志应避免记录完整简历、密钥、Cookie、Token 和页面隐私内容。
  • 分享日志前,请搜索并移除姓名、手机号、邮箱、公司联系人和岗位沟通内容。
  • 数据库备份由用户自行保管,建议存放在受控目录并进行磁盘加密。

AI 模型配置

  • API Key 应通过本地配置或环境变量保存,不应硬编码到源码。
  • 使用第三方模型服务前,请确认其数据处理和保留政策。
  • 不要把包含敏感身份信息的完整简历发送给不受信任的模型接口。
  • 日志、异常栈和前端提示不得回显完整密钥。

CI 安全

  • GitHub Actions 只应使用临时测试数据库和最小权限。
  • CI 不应读取个人招聘平台账号、Cookie、简历或本地模型密钥。
  • 不应把包含隐私数据的日志、数据库或浏览器缓存上传为 Artifact。
  • 新增第三方 Action 时,应优先锁定可信版本或提交 SHA。

自动化安全检查

仓库使用以下自动化检查降低常见风险:

  • CodeQL:分别分析 Java / Kotlin 与 JavaScript / TypeScript,包含扩展安全查询。
  • Dependabot:每周检查 Gradle、前端依赖和 GitHub Actions,默认不自动提交大版本升级。
  • Chrome 扩展校验:检查 Manifest V3、版本号、声明文件、脚本引用和 JavaScript 语法。
  • CI 临时数据隔离:测试只使用 GitHub Runner 的临时目录和 SQLite 测试数据库。
  • Release 校验:发布前执行测试、构建、扩展校验并生成 SHA256 校验文件。

自动化扫描通过并不代表项目不存在安全问题。涉及账号会话、浏览器消息、文件路径、日志输出和外部请求的修改仍需人工审查。

Release 安全

Release 产物不得包含 .env、数据库、日志、Chrome Profile、真实简历、Cookie、Token 或 API Key。

发布后应使用 SHA256SUMS.txt 校验文件完整性。完整发布流程与校验方法见 docs/releases.md

后续能力的安全要求

AI 代聊 HR、消息提醒、面试信息汇总等能力上线前,必须明确:

  • 哪些动作只是生成建议,哪些动作会代表用户发送内容
  • 发送内容是否必须由用户最终确认
  • 微信、企业微信和模型配置如何避免泄露
  • 平台规则是否允许相关自动化辅助
  • 如何撤销任务、审计发送记录并处理误操作

任何涉及代表用户对外发送内容的功能,都应默认保留人工确认和可追踪记录。

There aren't any published security advisories