Skip to content

优化一些安全问题。并且升级优化一些安全问题。并且升级界面 - #573

Open
holamian827-oss wants to merge 13 commits into
maillab:mainfrom
holamian827-oss:main
Open

holamian827-oss wants to merge 13 commits into
maillab:mainfrom
holamian827-oss:main

Conversation

@holamian827-oss

Copy link
Copy Markdown
  1. 硬编码 JWT 密钥已泄露 — mail-worker/wrangler-dev.toml:44、wrangler-test.toml:42
    两处都写着 jwt_secret = "b7f29a1d-..."(同一个值),旁边还有真实 database_id。生产用的 wrangler.toml:12 是空占位勉强过关,但只要有人照着 dev/test
    配置部署过,密钥就是公开的——HS256 用固定密钥,拿到就能伪造 token。
    → 删掉仓库里的值,改 wrangler secret put jwt_secret,并轮换。

  2. 邮件正文 XSS(我认为这是全项目最该改的一处)

  • mail-vue/src/components/shadow-html/index.vue:33 把 props.html 直接 shadowRoot.innerHTML,全仓库没有 DOMPurify 或任何 sanitize(已 grep 确认)。、 在 Shadow DOM 里照常执行。
  • 同文件 :26 还用正则抠出 拼进 <style> 模板,捕获组里放 }</style> 即可绕过标签白名单。
  • token 存在 localStorage(axios/index.js:12)+ 有效期 30 天 → 任何给你的域名发一封邮件的人,都能在收件人打开时盗走账号。
  1. index.html 被 jsjiami.com.v4 整份混淆(已确认,11KB 入口全是 Function(...) 构造)
    它逼着你必须开 CSP unsafe-eval,一开正经 CSP 就白屏;入口无法 review/diff,是供应链投毒的典型指纹。混淆只该用在第三方库上,不该用在入口 HTML。→ 还原明文。

  2. 三个免鉴权端点太宽 — mail-worker/src/security/security.js:11-22 的白名单

  • /oauth/bindUser(整段 /oauth 被放行):传任意 oauthUserId + 自选邮箱就能免验证码、无视注册开关建号,还能抢占尚未被绑定的第三方身份。
  • /webhooks:Resend 回调无签名校验,任何人可伪造投递状态。
  • /oss、/attachments/*:对象名是内容哈希,知道文件内容即可推导 URL 直接下载,无归属校验

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant