联系支持

我们通过电子邮件回复,通常两天内。

为防止滥用,Google reCAPTCHA 会检查这次提交,其间会向 Google 传输数据。脚本只在你打开此表单时才加载。

← 全部文章

那个被我们叫做「坏了」的文件

本项目的图片目录里放着一个 stats2.gif。它有 366 字节,日期是 2018 年 3 月,在源代码里出现的次数正好是零。2026 年 8 月 23 日,它被以 200 状态送出 2735 次,来自 145 个不同的站点——把整轮访问日志算完,是 858 个。

一个没有任何代码引用的文件,每天却被几百个别人的网页取走几千次。显而易见的解读是:某段老旧的嵌入代码没人换过,在本该是计数器的位置上静静地送出一张静态图。静态文件完全绕开 PHP,凡是直接落到 Apache 手里的东西,都不可能计到任何数。

于是我们写了个工具。它从日志里读出每一个引用页,用本站诊断嵌入代码时已经在用的那个抓取器把每一页取回来——带着它的 SSRF 防护,因为这些网址来自日志而不是我们自己——再看那个页面上到底有没有东西真的在计数。

全部 858 个页面

已经在计数(旁边有能用的嵌入代码)501
完全取不到288
有图标,源码里没有计数器编号69
只有老图标,什么都没计0

一个都没有。七十五分钟的抓取,什么也没找到。

本来一秒钟就能做完的那次测量

stats2.gif 的尺寸是 13 × 14 像素

它不是计数器,也不是带数字的徽章。它是一个小小的统计图标——正是当前样式库里 981 号设计所重现的东西,而 981 自己代码里的注释把它的前身描述得清清楚楚:不显示任何数字,只有一个小标记,点一下打开你的统计。它从来就不该计数。那些页面上一直另有东西在计数。

这个文件也没有坏。它以 200 应答,带着 2018 年的 Last-Modified 和一年的缓存期。它正在做它该做的事。

只要在最开头调一次 getimagesize(),整条调查线在工具写出来之前就会结束。可实际的问题是「为什么这个文件被取得这么频繁」,被接受的答案是「因为它是个坏掉的计数器」,之后的一切都建立在一个没人验证过的前提上。

唯一真正坏掉的东西

这一整轮里,日志只暴露出一处真缺陷:有一个网址每天被请求十次,全部返回 410,整段嵌入代码被塞进了一个链接的 href 里。有人把代码粘进了一个会转义 HTML 的输入框。他的计数器活得好好的,也在正常计数——坏掉的只是他自己那条指向自己统计页的链接。

工具留了下来,但去掉了写入路径。问题是正当的,答案是「没有」,两者都值得留着,免得以后还有人再手工问一遍。

广告