踩坑共21篇
安全扫描器:五个「扫了但没扫到」的坑,和一个实测确认的路径逃逸-知集

安全扫描器:五个「扫了但没扫到」的坑,和一个实测确认的路径逃逸

摘要:「扫一遍站点里的 PHP 文件,看看有没有马」—— 需求一句话,实现也不长:遍历目录、读文件、跑几条正则、列个表。但一个能用的安全扫描器和一段能跑的循环之间,差着五个坑,而它们的共...
lixiansen的头像-知集lixiansen12天前
0526
zibll 隐藏成就体系:一个「发放成功」却从未入账的潜伏 bug-知集

zibll 隐藏成就体系:一个「发放成功」却从未入账的潜伏 bug

弹窗说恭喜,账上却没有勋章。复盘父主题勋章清册的三全准入条件、flag 先置位掩盖失败、哨兵 get_type 修复方案,附可直接粘贴的零依赖隐藏成就体系。
lixiansen的头像-知集lixiansen17天前
0509
删数据类功能怎么写才不闯祸:一个「删文清附件」的六条边界-知集

删数据类功能怎么写才不闯祸:一个「删文清附件」的六条边界

删文顺带清附件,主流程十行代码;能不能上线取决于边界清单。本文给出六条边界(含一条会导致误删、我在真实项目里补上的引用守卫),以及如何把删除规则抽成纯函数在跑之前全测一遍。附零依赖...
lixiansen的头像-知集lixiansen17天前
04812
当主题模板没有过滤器:把「字数+阅读时间」并进它的 meta 行-知集

当主题模板没有过滤器:把「字数+阅读时间」并进它的 meta 行

主题文章头部那行 meta 是硬编码的、没有 apply_filters,插不进新项。本文给出第三条路:服务端渲染自己的块,客户端把子项逐个搬进目标行,搬不动就原地保留。附中英混排字数口径、三层测试与...
lixiansen的头像-知集lixiansen17天前
0475
404 监控的四个坑:计数翻倍、键名推导、点路径取值、与「自己看不到数据」-知集

404 监控的四个坑:计数翻倍、键名推导、点路径取值、与「自己看不到数据」

给站点做 404 监控:去重计数、后台明细与趋势、每日清理。功能不难,但从「写完」到「敢信它的数字」之间踩了四个坑:一次请求记两次(根因在 nginx 不在 PHP)、后台开关与代码读的不是同一个...
lixiansen的头像-知集lixiansen16天前
04612
维护模式:五个「看起来在工作、其实开了后门」的写法-知集

维护模式:五个「看起来在工作、其实开了后门」的写法

X-Forwarded-For 伪造、放行集合漏判、开关读反、200 而非 503,以及'缓存比维护层更早命中'。附零依赖交付代码与 145 项离线单测。
lixiansen的头像-知集lixiansen12天前
0458
友链申请表单:一次越权写入,和一处「写了但不发」的死角-知集

友链申请表单:一次越权写入,和一处「写了但不发」的死角

「友链申请」是每个站都要做的功能:前台表单(游客可填)→ 后台审核 → 通过后写进链接管理器 + 邮件通知。需求很直白,但写对要处理四类互不相同的问题 —— 其中一个是安全漏洞:审批动作只...
lixiansen的头像-知集lixiansen12天前
04211
WebP 自动转换:三个「上传成功、图片没变」的静默失效-知集

WebP 自动转换:三个「上传成功、图片没变」的静默失效

str_replace 路径映射在 CDN/协议不一致时静默失效、能力判定漏了 gd_info、大图不设上限导致上传 500、失败无痕、删原图开关。附零依赖交付代码与 185 项离线单测。
lixiansen的头像-知集lixiansen12天前
0416
秘技、限时、自动:三种勋章获取方式,一条授勋通道-知集

秘技、限时、自动:三种勋章获取方式,一条授勋通道

三枚成就勋章,三种完全不同的获取方式:秘技(Konami Code)、限时三选一认领、深夜自动授予。交互形态差很远,后端却是同一条通道。本文讲透三种模型各自最容易做错的一处:判定为什么必须在...
lixiansen的头像-知集lixiansen16天前
0407
内联 CSS 的真实代价:一次把「省 25.6%」证伪的实测-知集

内联 CSS 的真实代价:一次把「省 25.6%」证伪的实测

16 个内联样式块、占页面 21% 的体积,合并到底能省多少?孤立测量说 14%~31%,整页 A/B 说 0.15%~0.36%。本文给出正确口径、线上实测数据,以及把 N 个散点收成「可缓存出口」的零依赖收集器。
lixiansen的头像-知集lixiansen17天前
04013