LanternPress V2.5.0更新日志
功能新增
- 友链申请系统:复用评论通道提交(
[logo]图标三档 + 无协议自动补https),数据独立存储并与评论表解耦(含兼容回退),带审核流;配套独立管理后台(登录态 + CSRF + IP 限流,支持增删改 / 排序 / 批量 / 迁移 / 清理 / 统计)。登录态访客在友链页只看到列表,「申请链接」表单仅对匿名访客显示。 - 后台配置重构:设置外观重组为 7 组横向滚动 TAB(窄屏左右滑动);侧边栏支持按页面类型独立配置(配置项 30→35);文章页新增多分类面包屑与 JSON-LD;导航子菜单样式与构建器修复。
- CDN 缓存自动刷新(EdgeOne):主题内置钩子(零插件)+ 前台兜底,内容更新后自动清除缓存(整站 / 仅动态页),匿名长 TTL 与内容即时可见兼得;TC3 签名零外部依赖,失败静默并留日志;后台「缓存设置」TAB 支持一键手动刷新与「最近清除记录」。
- HSTS 下发开关:新增
ltHstsEnable(默认停用),并配「检测 HSTS 来源」按钮,按「边缘层(走 CDN)」与「源站层(CURLOPT_RESOLVE直连 127.0.0.1)」两次探测结果,决定是否由主题补位。 - 封面图升级:默认封面 / 无图兜底由
blog_bg.jpg换为default-cover双格式——缩略图 avif 优先(image-set回退 webp),og:image用 webp 兼容社交爬虫,海报「无封面」判断同步更新并兼容旧缓存。
安全加固
- SSRF:poster-proxy 全链路防护——Host 投毒 / IPv6 / DNS 重绑定 / TOCTOU 钉 IP / 限流。
- XSS:评论协议 + 属性白名单;清理属性前缀与实体编码绕过;配置下发去除内联脚本;友链管理页 CSRF + IP 限流 + 防点击劫持,CSRF 令牌输出转义;首图背景注入面剥离反斜杠。
- 鉴权与密钥:清除记录 / 立即刷新 / HSTS 探测三个后台接口统一要求管理员身份(前台匿名一律拒绝);EdgeOne 密钥经
themeConfigHandle存隐藏键、拒绝客户端提交、后台不回显明文、留空不修改;清除记录改textContent渲染。 - 基础项:补齐 SameSite;字段缓存 null 哨兵。
性能
- 缓存层:manifest 静态化;侧边栏四模块整段缓存;友链申请 / 解析结果与最终 HTML 片段缓存(友链页 DB 查询归零,写操作即时失效);友链 LOGO 与头像同源代理(同时规避外链与混合内容)。
- 查询层:评论父作者映射消除
getReplyN+1,评论渲染按cid + 版本号 + 分页缓存(提交 / 审核 / 删除即时失效);列表页缩略图免整篇渲染;上下篇缓存加 TTL;浏览 / 点赞限流按 IP 聚合。 - 兜底刷新:EdgeOne 前台兜底由每请求全表扫描改为脏标记 + 连败暂停;申请限流改为 IP + 邮箱双维度。
缺陷修复
- 改正文前台不更新:主题注册的
finishArticle在 Typecho 1.3 不存在,改为finishPublish/finishSave/finishDelete/finishMark。 - 后台 EdgeOne 接口恒定失败:后台
functions.php由渲染阶段才被 require,echo只能追加到输出缓冲尾部,JSON 必然被 HTML 污染。新增lt_edgeone_json_begin()(发头前清空所有输出缓冲),前端改r.text()+ 容错解析,不再依赖r.json()。 - 列表页 description 误取文章摘要:
inc/meta.php无条件读$widget->fields->articleDesc,而列表页$widget->cid指向查询结果最后一行,导致首页 / 分类 / 标签 / 归档 / 搜索页的描述全变成某篇文章摘要。改为仅单页读取,列表页回落站点描述 / 归档描述,同时省掉一次table.fields查询。 - 其他:Typecho 1.3 兼容(
Helper::options);友链管理页远程登录态失效引导链;主题禁用 / 文件缺失时入口自动移除;归档缓存与限频原子写等杂项。
本文为 木子印象 原创文章,如若转载,请注明出处: https://muzihome.com/archives/341.html
