博客加实时聊天,反遭用户攻击
I added a real-time chat to my blog, people used it to attack me
我在博客上加了一个简单的实时聊天小部件,本以为只是个无伤大雅的装饰,没想到在分享一篇批评 Tailwind CSS 的文章后,它瞬间成了攻击我的工具。短短几分钟内,聊天框里充满了种族歧视、死亡威胁、刷屏干扰,甚至有人冒充我发送垃圾链接。虽然我的 Django LiveView 架构让实时功能变得简单,但也让我直面了实时内容审核的残酷:攻击者在几秒内就能发动挑衅,而防御措施往往滞后。最终,我通过关键词过滤、缩短消息长度以及“不理会”的策略平息了事态。这次经历让我深刻意识到,任何用户输入在未被验证前都应被视为敌对,而实时互动的脆弱性远超想象。
每一个输入在未被证实安全之前,都应被视为敌对。
HN 评论区
99- zetanor
把这事说得像是一场“攻击”,感觉非常戏剧化。在我看来,那些非建设性的留言要么是垃圾帖,要么只是好奇的试探(测试某些字符能否通过,测试那些禁忌词能否通过,测试各种内容的渲染效果,测试输入是否被过滤……)。里面确实有指向天知道哪里的链接,还有一些充满煽动性的文字墙,但我没发现任何可能造成实际伤害的东西。
- egypturnash
这个帖子的角落里聊天功能还在,人们正往里面输入各种恶毒的东西。
好吧,看来你准备在程序化审查的泥潭里打滚了。或者干脆把它删掉。如果你选择前者,并且在这里发帖说你在尝试修复它,那我敢肯定你会得到更多关于如何通过正则表达式或其他手段强制文明的大量“免费测试”。好好享受学习 Scunthorpe 问题(斯坎索普问题)的过程吧。
- alnwlsn
我自己也干过这种事。我有一台闲置的热敏收据打印机,于是决定把摄像头对准它,并把它放到一个网页上,让任何人都能往上面打印各种乱七八糟的东西(其实现在还在运行 - alnwlsn.com/printer)。当然,我一开始就清楚自己会面临什么,上面出现的留言类型也就是你在这里能预期到的。一些亮点如下:
- 它曾被某个比 4chan 还糟糕的地方发现,对方花了大约 4 个小时疯狂刷屏,打印出你能想象到的最恶劣的内容,直到把纸用完。之后我加了一些过滤机制,阻止大量重复消息浪费纸张,还加了一些正则表达式,减少了一些特别恶毒内容的出现频率。不过也有人会发一些友善的留言。
- 这套系统经常出故障。我最终会注意到并修复它,但它可能已经坏了好几个月。不可避免的是,几天内就会有人再次使用它,而我并没有做任何公告。这么多人是如何在这个互联网的小角落里找到它的,对我来说是个谜,但他们确实找到了。我坚信其中大多数是真人,因为谁费心去写个机器人专门针对它呢?
我这么做的初衷是觉得让它这样比放在架子上积灰更有趣,而且可以把随附的一整盒打印纸用掉,而不是把整个东西扔进垃圾桶。它确实很有趣;我可能不会说它很“愉快”,但它绝对有趣。
- dylan604
从最早允许用户输入文本的网站开始,这种事就一直存在。任何允许用户绘图的功能也是如此,很快就会出现人们画出的粗俗(指内容而非技巧)物体。这就是人性。一旦人们意识到可以利用这些表单作为攻击向量,我们就一发不可收拾了。现在有了机器人可以代劳,我敢想,从表单上线到第一个机器人开始使用,时间可能只有几分钟。我见过各种被提议的变通方案来缓解机器人表单提交的问题,但最终,你至少会被垃圾信息淹没。当然,添加一个类似机器人聊天的功能,人们肯定会比对待普通表单字段更加滥用它。
如果今天还有人对此感到惊讶,在我看来,这说明这个人真的是管理网站的新手,而且是新手中的新手。
- JSR_FDED
我建议再加一条启发式规则:一旦你的脏话检测器被触发,就关闭聊天功能 10 分钟。这样,一波又一波的混蛋就不会垄断聊天室,当他们转移到下一个目标时,你的网站功能会自动恢复。