联系支持

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

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

← 全部文章

排除名单为什么不做哈希

正在建站的人,一天要打开自己的站二十次。在一个每月四十位访客的计数器上,统计的一半就是你。所以有一个设置:不要统计来自我自己地址的访问。

本服务的其他每一处,地址都会连同一个保密的盐和日期一起哈希,地址本身从不进入存储。唯独这一处,它按你输入的样子原样保存,明文。这是一个有意为之的决定,它值得被说出来,而不是留给人去发现。

最先试过的那个版本

第一版存的是地址的校验和,与其他一切保持一致。它能用,存得更少,而且几乎毫无用处:大多数家庭宽带每天都会拿到一个新地址。这个排除在你设置的那一刻是对的,第二天早上就一文不值。

能熬过每天更换的是一个网段——通常是运营商的 /24 或 /16,最后一部分在轮换,而它保持不变。而网段没法当作校验和来比较。哈希是故意摧毁顺序的,而「这个地址在不在这个网段里」恰恰是一个关于顺序的问题。没有什么聪明的绕法;两项要求指向相反的方向。

所以网段按输入的样子保存下来,做过归一化,旁边放着它的两个边界,各十六字节,由一次 BETWEEN 决定。IPv4 以它的 IPv6 写法存放,这样两个族系宽度相同,一次比较就能覆盖两者。

为什么这笔交换在这里可以接受

被保存的是站长自己的网络,由他自己输入、向他自己展示、由他随时可以删除。它不是访客的地址。隐私政策用同样的措辞说了同一件事,因为另一种做法——把本服务描述成对一切都做哈希,然后悄悄把这里排除在外——会是那种大体上为真的说法,而这种说法比什么都不说更不值钱。

上限是每个计数器十条:够家里、办公室和移动网络用,又少到这份名单没法变成一个通用的地址仓库。

第二种,给会动的东西

有一部分流量身份稳定而地址不稳定:你自己的可用性监测、聊天软件的链接预览抓取器、某个检查服务。网段抓不住它们。

对它们,排除比对的是浏览器标识里的一个片段。填 uptimerobot,就能抓住它发送的整个标识串。最少四个字符,因为两个字母的片段几乎会出现在所有标识里,那会把计数器整个关掉。

一般性的那一点

一套隐私设计就是一组取舍,而有意思的地方正是某条规矩不得不弯折的那些位置。从不弯折的规矩,通常意味着还没有人把它拿去对着一个真实需求量一量。

要避免的是悄悄弯折。一个其实没做哈希、文档里却写得像做了哈希的字段,比一个明文保存、也如实说明的字段更糟——它花掉了自己没有挣到的信任,而且早晚会被某个没料到自己需要去核对的人发现。

广告