垃圾投稿、洗版与围攻——保护开放的投稿表单
匿名表单对所有人开放,包括机器人、打广告的人,以及某个铁了心的人。本文说明滥用是怎样出现的、哪些防御措施不会破坏匿名,以及遇到洗版时该怎么办。
其他语言: English · Bahasa Melayu · 繁體中文
简短回答。 你不能要求匿名投稿者登录,所以目标是让滥用变得代价高昂,而不是完全不可能。按网络地址和按浏览器工作阶段设定的频率限制、隐藏的蜜罐栏位、最短填写时间、工作量证明,再加上把所有含链接的投稿扣下,就能挡掉大部分滥用——而这些措施没有一项需要知道投稿者是谁。
匿名投稿表单有一个与众不同的安全难题。对付任何网上服务被滥用,标准答案都是要人表明身份——登录、验证电邮地址、绑定电话号码。匿名专页一样都不能做,否则就不再是匿名专页。它必须继续对一无所知的人开放,同时又让待审投稿保持可读。
这是做得到的。它需要另一套工具,也需要接受一点:目标是让滥用变得代价高昂,而不是完全不可能。
谁在滥用表单,为了什么
防御措施取决于攻击者是谁,所以先把他们分清楚。
自动垃圾讯息。 一些程序在网上到处找有文字框的表单,往里面塞链接——赌博网站、冒牌货、贷款广告。它们并不是专门针对你。它们成批出现,一眼就认得出来,也最容易挡住。
人手发的广告。 真人把自己的店、补习服务或活动的宣传贴进来。数量不多但很有恒心,被拒绝之后还会改写再投。
单人洗版。 一个人投上几十次、几百次——有时是同一则讯息,有时是变着花样。他可能是想靠不断重复把某篇帖子硬挤上去,可能是想淹没别人的投稿,也可能只是想把管理员磨到没力气。
围攻。 一群人在别处——聊天群组、对头的专页——串连好,就某一件事大量投稿。这在学生选举、学会之间的纠纷,以及涉及指名道姓者的争议期间很常见。每一篇投稿都来自不同的人、不同的设备,所以看起来像真实的民意。而这正是他们的用意。
恶意链接。 投稿里夹带通往钓鱼网页或恶意软件的链接,指望管理员去点——或者更好,把它发布出去。
不需要身份的防御措施
频率限制
限制同一来源在一段时间内可以投稿的次数。这是最有效的单一措施,而且诚实的用户根本感觉不到,因为他们很少一天投稿超过一两次。
难处在于“来源”二字。最直接的选择是网络地址,但地址是共用的。校园 Wi-Fi 上的每个人,看起来可能都来自同一个地址;移动网络更常把几千个用户放在同一个地址后面。严格到足以挡住洗版者的限制,可能连整栋宿舍都一起挡掉。
有一些务实的折衷办法:
- 按地址设定的限制要宽松——每小时几十篇,而不是两篇;
- 另外按浏览器工作阶段设一个严格得多的限制,挡住随手重复投稿的人;
- 达到上限时,让对方慢下来,而不是直接封锁——等一分钟足以让洗版者泄气,又不会把邻居锁在门外。
不追踪人的验证方式
CAPTCHA 能证明对面是真人,对付机器人有效。它的代价是增加阻力、给使用辅助科技的人带来困难,以及——视供应商而定——把访客的资料交给第三方。最后这一点,和匿名的承诺格格不入。
有一些不需要第三方的替代办法:
- 蜜罐栏位。 一个人看不到、机器人却看得到的表单栏位,而机器人往往什么都填。凡是这个栏位有内容的投稿,一律丢弃。它不花钱,却能挡掉多得出乎意料的自动垃圾讯息。
- 最短时间。 没有人能在两秒之内填完一份表单。比这更快送达的投稿,一律丢弃。
- 工作量证明。 投稿者的浏览器必须先解开一道小小的运算题,表单才接受投稿。一个人不会察觉那半秒钟。想发送一万篇投稿的人,却会发现这要花掉实实在在的运算时间。整个过程不涉及任何个人资料。
内容规则
- 扣下或去掉链接。 真正的告白很少带网址。把所有含链接的投稿送进另一堆待审项目——或干脆拒收链接——就消除了发垃圾讯息的大部分动机。
- 抓出重复内容。 反复投来的相同或近乎相同的文字,可以合并成一项,旁边标上次数。
- 两头都限制长度。 下限挡住空白和只有一个字的投稿;上限挡住有人贴进一整本小说。
开放时间
没有任何规定要求表单必须全天开放。有些专页在夜间关闭投稿,或在待审投稿达到一定数量时关闭,并明白告知。凌晨三点没人看着的时候涌来的洗版,远比撞上一则“投稿于早上 8 点重新开放”的告示来得棘手。
不该做的事
不要“暂时”要求登录。 你一这样做,专页就不再匿名,而真正的投稿者——比较谨慎的那一群——会最先离开。
不要把洗版的内容发出来。 贴出二十篇几乎一模一样的投稿来“让大家看看我们面对的是什么”,正中洗版者下怀。
不要封锁整个网络。 封掉校园的地址段或某家电讯公司,是为一个人的行为惩罚几千个人。
不要用你管理专页的设备和账号去点投稿里的链接。 如果一定要查看链接通往哪里,就用链接预览或扫描服务,而不是你的浏览器。
不要详细公布你的防御措施。 “我们会限制投稿次数”没问题。“每个地址每小时恰好可投 15 篇”就成了操作手册。
认出围攻
围攻比洗版更难察觉,因为每一篇投稿单独来看都合情合理。要留意的迹象有:
- 某个话题的投稿量突然上升,尤其是昨天还很冷清的话题;
- 许多投稿出现相似的措辞、同一个少见的字眼,或同一套说法;
- 集中在很短的时间内涌入,而且来得很突然;
- 投稿读起来像是写给观众看的,而不是写给专页的——工整、带着论辩的口吻、像口号。
看到这种情况,投稿的数量并不能告诉你到底有多少人持这种看法。十个人可以发出两百则讯息。
相称的回应,是在话题确实符合你的规则的前提下,发布一两篇有代表性的帖子,并公开说明收到了许多类似的投稿。不要让数量换来比这个话题原本应得的更多版面。在选举和纠纷进行期间,可以考虑订一条常设规则:专页不发布任何关于候选人或纠纷各方的内容——并在竞选开始之前就宣布,以免被解读为偏袒某一方。
遇到洗版时
- 暂停表单(如果你的工具做得到),并附上简短的告示。关闭十分钟,足以打断大多数洗版的势头。
- 不要逐篇阅读。 按时间排序,找出这一波从哪里开始、到哪里结束,把它当作一整块来处理。
- 留意它在掩盖什么。 洗版有时是为了淹没某一篇特定的投稿,或把管理员累垮,好让某些东西蒙混过关。要仔细检查它开始之前和进行期间收到了什么。
- 暂时收紧限制,等它过去之后再放宽。
- 记录下来,写进你的决定记录:什么时候、多少篇、关于什么。第二次尝试通常会照着第一次的模式来。
当滥用是冲着某个人来的
针对某位指名道姓的个人的大量投稿,不是垃圾讯息问题。那是骚扰,而你的专页就是对方想利用的工具。全部拒绝,连经过淡化的摘要也不要发布,并考虑是否应该让当事人知道自己正被针对。意图使他人困扰的反复通讯,可能构成刑事罪行——见《在马来西亚,人肉搜索(doxxing)违法吗?》。
切合实际的目标
你不可能做到零垃圾讯息,而一个锁得严密到足以保证这一点的表单,也就没法用了。目标应该是:自动产生的垃圾永远到不了人的面前,一个铁了心的洗版者被拖慢到涓滴之流,而围攻被如实地认出来。几项挑选得当的措施——频率限制、蜜罐栏位、扣下链接和一个暂停按钮——就能做到,而且没有一项需要问投稿者他是谁。
常见问题
不要求登录,怎样挡住表单上的垃圾讯息?
限制同一来源在一段时间内可以投稿的次数,加一个只有机器人才会填的隐藏蜜罐栏位,丢弃两秒之内填完的投稿,要求浏览器先完成一道小小的工作量证明运算,扣下或拒收含链接的投稿,并合并重复的内容。这些措施都不会识别投稿者的身份。
什么是蜜罐栏位?
一个人看不到、机器人却看得到的表单栏位,而机器人往往什么都填。凡是这个栏位有内容的投稿,一律丢弃。它不花钱,却能挡掉大量自动垃圾讯息。
在匿名表单上用 CAPTCHA 好吗?
它对付机器人有效,但会增加阻力、给使用辅助科技的人带来困难,而且视供应商而定,会把访客的资料交给第三方,这和匿名的承诺格格不入。蜜罐栏位、最短时间和工作量证明都不需要第三方。
怎样分辨围攻和真实的民意?
留意某个话题的投稿量突然上升、许多投稿出现相同的措辞或说法、集中在很短的时间内涌入,以及读起来像是写给观众看的文字。十个人可以发出两百则讯息,所以最多发布一两篇有代表性的帖子,并说明收到了许多类似的投稿。
遇到洗版时,管理员该怎么做?
暂停表单并附上简短的告示,把这一波投稿当作一整块来处理而不是逐篇阅读,检查它开始之前和进行期间收到了什么(以防洗版是在掩盖什么),暂时收紧限制,并把事情写进决定记录。
为了挡住一个洗版的人,应该封锁整个网络吗?
不应该。网络地址是共用的:校园 Wi-Fi 上的每个人看起来可能都来自同一个地址,移动网络也把几千个用户放在同一个地址后面。封掉一段地址,是为一个人的行为惩罚几千个人。让那个人慢下来就好。