周末闲来无事,突然觉得这个 blog 虽然基本功能都有了,但总感觉缺点什么。于是喊 VS Code(GitHub Copilot)帮我去 GitHub 上搜罗一圈,看看主流博客系统都有哪些功能是我这个「手搓博客」还缺的。
VS Code 一顿操作猛如虎,给我拉了一份 12 项功能清单。我看了下,还挺靠谱,决定让它一股脑全给我加上。
功能清单
| # | 功能 | 说明 | 参考 |
|---|---|---|---|
| 1 | 📊 访问统计 | 记录文章 PV/UV,仪表盘展示访问趋势图、热门文章排行 | Ghost/Halo/WordPress |
| 2 | 🖼️ 媒体库管理 | 独立的图片/附件浏览器,支持批量上传、删除、复制链接 | WordPress/Halo |
| 3 | 🏷️ 标签管理 | 标签的独立 CRUD 页面,支持重命名、合并、删除 | 所有平台都有 |
| 4 | 📄 独立页面 | 创建「关于」「友链」等非博文的静态页面 | Typecho/Ghost/Halo |
| 5 | 📝 草稿箱 + 定时发布 | 文章增加 draft/published/scheduled 状态,定时发布用 Laravel Scheduler | Ghost/WordPress |
| 6 | 🔗 友情链接 | 链接管理 CRUD(名称、URL、图标、分组、排序),前台展示友链页 | Typecho/Halo |
| 7 | 🗑️ 回收站 | 文章软删除(SoftDeletes),可恢复或彻底删除,防止误操作 | WordPress/Halo |
| 8 | 📋 操作日志 | 记录后台关键操作(登录/发布/删除/设置变更),便于审计 | Halo/Ghost |
| 9 | 🔍 SEO 增强 | 每篇文章可自定义 meta description、OG 图片;自动生成 sitemap.xml | Ghost/WordPress |
| 10 | 📤 导出/导入 | 一键导出所有文章为 Markdown+JSON 压缩包,支持导入恢复 | Typecho/Ghost |
| 11 | 🎨 外观设置 | 后台可配置主题色、首页布局、是否显示侧栏等,无需改代码 | Halo/WordPress |
| 12 | 💌 评论通知 | 新评论时通过邮件/Webhook 通知管理员 | Ghost/WordPress |
实现过程
跟 VS Code 说「先把功能一股脑的全部加上,然后再修吧,这样太慢了」,于是分两批干:
第一批(功能 3-6):标签管理、独立页面、草稿+定时发布、友链管理。改了差不多十几个文件,加了 3 个新 Model、3 个 Controller、6 个 Blade 视图、3 个数据库迁移。
第二批(功能 7-11):回收站、操作日志、SEO、导出/导入、外观设置。又加了 1 个 Model、1 个 Controller、3 个视图、2 个迁移。回收站用了 Laravel 的 SoftDeletes;操作日志在各关键操作(登录、发文、删除、改设置等)埋了 AdminLog::log();SEO 加了 OG 标签和 sitemap.xml;导出把所有文章打成 ZIP(JSON + Markdown 双格式);外观设置可以直接在后台改主题色、自定义 CSS 等。
前两个功能——访问统计和媒体库——是更早之前就做完的。评论通知暂时还没做,后面再说。
安全审计
全部功能加完后做了一轮冒烟测试 + 代码安全审计,发现了不少问题,主要包括:
- 5 个视图用了
addslashes()做 JavaScript 转义(不安全),全部改成json_encode() - 前台评论没按审核状态过滤,待审核和垃圾评论都直接展示了
- 媒体上传允许 SVG 文件——SVG 可以内嵌 JavaScript,等于开了个 XSS 后门
- 文章导入没用数据库事务,也没校验 JSON 结构
- 系统设置接受任意 key,没做白名单限制
- 评论提交没有速率限制
- 自定义 CSS 注入可以用
</style>闭合标签绕过
总共修了 10 个安全问题,修完又跑了一遍冒烟测试,全部通过。
详细的审计报告发在了下一篇文章。
当前进度
| 功能 | 状态 |
|---|---|
| 📊 访问统计 | ✅ 已完成 |
| 🖼️ 媒体库 | ✅ 已完成 |
| 🏷️ 标签管理 | ✅ 已完成 |
| 📄 独立页面 | ✅ 已完成 |
| 📝 草稿+定时发布 | ✅ 已完成 |
| 🔗 友链管理 | ✅ 已完成 |
| 🗑️ 回收站 | ✅ 已完成 |
| 📋 操作日志 | ✅ 已完成 |
| 🔍 SEO 增强 | ✅ 已完成 |
| 📤 导出/导入 | ✅ 已完成 |
| 🎨 外观设置 | ✅ 已完成 |
| 💌 评论通知 | ⏳ 待开发 |
| 🔒 安全审计 | ✅ 10 项修复 |
11/12 完成,还差一个评论通知。一个周末搞定这些,虽然是 AI 在干活,但指挥 AI 干活也挺累的(笑)。
💬 评论 (0)
暂无评论,来说第一句话吧~
发表评论