Repository navigation
pupu v0.2.6
本版本是安全修复版,建议所有用户更新。
🔒 安全修复
1. 可信域名校验可被绕过
*.example.com 形式的通配符判断缺少子域点边界,导致 evilpupu.app 这类同后缀但不属于该域的域名被误判为可信。而可信域名列表正是「允许该网站调用扩展发布能力 / API」的授权凭据。
- 影响:若你的可信域名列表里存在
*.xxx形式的条目,同后缀域名会被一并放行 - 修复:两处判断(后台与内容脚本)统一收敛为带点边界的匹配,并补了 15 个单元测试
- 建议顺带检查一下设置页里的可信域名条目,移除不再需要的通配符
2. 文章内容未做 HTML 消毒
Markdown 预览与「发布时提交的 HTML」都直接使用渲染结果,未过滤。而文章可以从任意 URL 导入,该 HTML 不仅渲染在扩展页面,还会被注入到 dongchedi / sohu 等平台的编辑器页面。
- 修复:接入 DOMPurify,移除
<script>、<iframe>、on*事件处理器、javascript:链接,并额外禁止表单控件 - 保留文章排版所需的标签与内联样式,导入文章的排版保真度不受影响
- 代价:入口包 +28 KB
🛠 工程质量
- 引入 vitest,新增 35 个单元测试(域名匹配 15 / HTML 消毒 20),并接入 CI —— 这是本项目第一次有自动化测试
- 修好了 husky 钩子:此前
.husky/下只有 husky 内部目录,导致lint-staged与commitlint从未真正运行过 - 补齐英文语言包缺失的 3 个条目(此前英文界面会显示原始 key 名)
- 新增
OPTIMIZATION.md:完整的项目优化审计,含实测证据、优先级与执行顺序
📦 安装
下载 pupu-v0.2.6.crx,拖进 chrome://extensions(Edge 为 edge://extensions,需开启「开发者模式」)。已装旧版的用户直接安装即可覆盖更新。
扩展 ID 保持 nffpajdealkjpdmjjboneelajanbboig 不变(沿用同一签名密钥),因此升级不会丢失已保存的账号缓存与设置。
更完整的安装与使用说明见文档站:https://luskyle.github.io/pupu/guide.html
️ 已知待办
- 动态内容在
maimai/weixinchannel两个平台仍存在未转义的innerHTML拼接(会导致含<>的文本被吞,属 self-XSS 级别),已记录在OPTIMIZATION.md的 P1-7,下个版本处理 - 依旧需要「开发者模式」才能安装:这是不经过应用商店的浏览器限制
⚠️ 本项目为个人学习 / 交流项目,请遵守各平台的使用规范与当地法律法规。