laoyang
51c16209a0
4.1.1 修设置页链接无法新窗口打开(target 被 wp_kses 剥掉) #33
用户反馈:设置页「数据导出服务」那个链接点下去在本页跳走了,
把正在改的设置页顶掉。
根因不是链接写错 —— 源码里 target="_blank" 一直在。是框架渲染 desc 时
走 wp_kses($explain_value, $allowedtags)
(inc/options-framework/includes/class-options-interface.php:210/315),
而 WordPress 全局 $allowedtags['a'] 只有 href + title,target 和 rel
被静默剥掉。实测:
输入 <a href="..." target="_blank" rel="noopener">数据导出服务</a>
输出 <a href="...">数据导出服务</a> ← target/rel 消失
修法:在 kratos_options() 开头给 $allowedtags['a'] 补上 target / rel。
只放宽这两个属性,不放宽别的。时机是对的 —— _optionsframework_options()
在第 47 行就调 kratos_options(),早于所有 wp_kses 调用。
影响的不止这一个链接:robots.txt、设置-阅读、两个翻译 API 的链接
全都是同样情况,一并修好(共 5 处)。
线上真实环境验证:
ALLOWED_BEFORE=href,title
ALLOWED_AFTER=href,title,target,rel
HAS_TARGET=YES
版本号 4.1.0 → 4.1.1:同一版本号重发 PUC 认不出(它用 version_compare
判严格大于),已装 4.1.0 的站点永远拿不到这次修复。readme 按用户确认
**并入现有 V4.1.0 节**,不新增一节(节数仍 57)。
补的判据(都做了注入反证):
- _mkzip410.py 11c 段 5 条:白名单补了 target/rel、补的位置在
kratos_options() 内、「数据导出服务」链接带 target、没拿 window.open 绕过
- _mkzip410_falsify.py 17/18 组:删白名单必须变红,18/18 抓到
- _readme410.py 改造成替换模式 + 反证(不换首节必须红,42/0)
顺带修两个已过期的地方:
- _mkzip410_falsify.py 的「版本号没改」注入锚点写死 "Version: 4.1.0",
升 4.1.1 后锚点未命中、反证报"没抓到"(其实是注入脚本自己过期)
⇒ 改成动态读当前版本号
- _publish410.sh 的 readme 首节判据要求 == 本版号,但 4.1.1 并入
V4.1.0 节 ⇒ 改成「首节是 4.1.x」+「本版修复说明真在里面」两头都验
线上已发布:md5 bd12b67f2c4ca5bec5053a02e49f2fe6
PUC 实测 HAS_UPDATE=YES(已装 4.1.0 → 新 4.1.1)
2026-10-28 17:45:19 +08:00
..
2026-10-25 19:41:49 +08:00
2026-10-27 21:40:00 +08:00
2026-10-23 13:55:23 +08:00
2026-10-26 18:42:40 +08:00
2026-10-24 01:03:36 +08:00
2026-10-25 20:19:27 +08:00
2026-10-25 17:10:06 +08:00
2026-10-26 13:25:51 +08:00
2026-10-25 10:36:29 +08:00
2026-10-25 10:36:29 +08:00
2026-10-23 12:55:41 +08:00
2026-10-26 12:20:33 +08:00
2026-10-25 22:17:45 +08:00
2026-10-23 17:29:37 +08:00
2026-10-24 01:03:36 +08:00
2026-10-23 14:43:47 +08:00
2026-10-24 01:03:36 +08:00
2026-10-25 09:52:07 +08:00
2026-10-23 22:56:10 +08:00
2026-10-28 17:45:19 +08:00
2026-10-23 13:55:23 +08:00
2026-10-23 12:55:41 +08:00
2026-10-23 13:55:23 +08:00
2026-10-28 17:18:54 +08:00
2026-10-28 08:27:53 +08:00
2026-10-27 13:33:53 +08:00
2026-10-27 16:05:43 +08:00