一个 Vibe Coding 网站是怎么在上线几十分钟内被打爆的

34112
  • pulengba

    昨天发帖分享了一个刚做的小网站,叫 锐评。

    网站可以给不同社区打分,档位是:

    夯 / 顶级 / 人上人 / NPC / 拉完了

    我怕兄弟们连快捷登录都懒得点,跟别提注册登录了,就把游客权限也打开了:不登录可以评分,也可以评论。让大家先进来玩玩,真有人乱搞的话,我再去后台关掉游客权限。

    当时觉得这个方案挺宽松灵活的,现在看,确实宽松,主要是方便攻击脚本发挥。

    我的帖子没爆,服务器先爆了

    当天晚上我先后在几个社区发了帖子:

    • 20:50:2Libra
    • 21:01:V2EX
    • 后来又发到了 Linux Bi

    本来以为能来几十个人,帮忙测测功能、提点意见。没想到互联网上有坏人,没过多久,网站就打不开了。我打开 Vercel 后台一看,请求量已经飞起来了。

    Vercel DDoS Mitigation 数据

    两个相邻 IP 正在疯狂请求网站里的条目:

    103.197.30.225
    103.197.30.226

    主要目标是 /t/rping-cc。一共制造了大约 20 万次 Firewall Actions,还顺手给“锐评”刷了接近 3,000 次“拉完了”。

    我做这个网站,本来是想让大家锐评互联网社区。上线第一天,网站自己先登上了「拉榜」榜首。

    锐评条目列表

    拔电源吧

    我一开始没当回事儿,毕竟早就想过:有人乱搞的话,去管理后台关掉游客权限就行。

    没想到的是,攻击来的时候,我自己也进不去后台了。页面打不开,无奈只能直接改数据库,把游客评分和评论权限先关掉。权限改完,异常评分是不再增加了,但那两个 IP 还在继续请求,给服务器上强度。

    刚开始我其实没怎么生气,觉得网站刚上线就被打,也算是给自己上了一课,当个乐子看就好。我屏蔽了 IP、加了防护规则,也在帖子里明确说了这件事。

    结果那个人并不打算到此为止。IP 被 ban 以后,它又换了 IP 继续捣乱,还注册了一个用户名叫 xjp 的账号,开始刷乱码评论。评分刷不动了,就改刷评论区。一共发了 128 条锐评,评论区被它刷得像乱码瀑布一样。

    这就不是乐子了,这人确实是坏种,这么干对你有什么好处呢?

    只能先拔电源,把服务关了。

    Vercel 流量概览

    乱码评论和异常刷票结果

    日志里的时间线

    后来我导出了攻击前后近两个小时的完整日志。这个客户端第一次出现是在:

    21:12:53  GET  /t/v2ex       200

    紧接着:

    21:13:09  GET  /t/rping-cc   200
    21:13:16  POST /t/rping-cc   200

    它进入网站 23 秒后,就开始尝试刷票。刚开始还挺克制,隔几秒请求一次,像是在试接口。十分钟后,大概确认接口确实没什么防护,于是正式开工:

    21:24  开始高频请求
    21:25  单分钟接近 2,000 次
    21:35  第一轮高峰
    22:02  第二轮高峰
    22:05  基本结束

    Vercel 的 DDoS Challenge 大约拦下了 16.4 万次请求,但仍有 5 万多次攻击被放行。

    图片4

    所以是 V 站用户干的吗?

    刚开始我怀疑是 linux bi 用户干的,毕竟我天天逛 v 站,默认把战里兄弟都当成高素质人群了,但是从日志上看,我开始怀疑是 v 站用户攻击的。

    V2EX 帖子发于 21:01,帖子里放的是专属链接 /t/v2ex;可疑客户端在 21:12:53 第一次出现,第一条请求刚好也是 /t/v2ex,23 秒后就开始测试刷票。时间和路径确实挺吻合。

    当然,我可定无法证明是某位 V2EX 用户,链接可能被转发,也可能通过别的方式传播,更没有证据指向某个具体账号,大家看个乐子得了。

    图片5

    连夜补窟窿

    关站以后,我紧急补了几条安全规则。

    屏蔽攻击 IP,开启 Attack Mode,增加全站请求限流,给统计接口和详情页写操作单独限流,关闭游客评分和评论,清理异常数据,再检查一遍服务端校验和数据库约束。

    以前担心登录会劝退用户。现在觉得,劝退几个嫌麻烦的用户,总比把我劝退强。

    我之前为了让注册登录方便一点,还把 confirm email 关掉了。现在看来,这个开关还是得打开。要求用户确认邮箱,至少能给批量注册增加一点成本,不能再让脚本注册完账号就直接开刷。

    总结:Vibe Coding 路边一条

    这个网站 MVP 版本全靠 Vibe Coding 快速做出来的。

    上线几十分钟就被打爆了,我也低估了互联网上有些人的恶意,难怪很多论坛、社区都设置各种注册条件、发言条件。这都是被你们这帮坏种逼的。

    这次算是被互联网坏人上了一课,也提醒自己,敬畏技术,生产级的产品不是 AI 几下就能做出来的。

    目前已经重新上线。下次争取活久一点。

    <!--sb_limit_edit_time:1786849279:1-->

  • pulengba
    #1

    网站贴错了,是 rping.cc 不是 com - -

  • lao1
    #3

    @pulengba #1 我给你改

    向往自由爱自由
  • lao1
    #2

    哈哈哈

    向往自由爱自由
  • 小白
    #4

    @lao1 #2 直接点击“ 锐评” 这两个字就可以跳转,就是很不明显。这个是用户自己设置的还是就是这种的

  • 小白
    #5

    能增加个每个网站的直达链接吗?虽然能找到 不过这样更方便

  • lao1
    #6

    @小白 #5 可以 类似导航内中 对吧 下面有网站直达

    向往自由爱自由
  • 小白
    #7

    @lao1 #6 对 这个有了 我之前没注意到 得点进去在右上方

  • lao1
    #8

    @小白 #7 好的

    向往自由爱自由
  • pulengba
    #11

    @小白 #5 可以加一下,之前在列表里有,我感觉列表信息太多了,就删掉了,反正详情里也有链接

  • 毛泽东
    #9

    适配一下移动端啊,移动端占大头的。

  • pulengba
    #10

    @毛泽东 #9 好的,教员

  • kedre
    #12

    套一下Cloudflare Turnstile,能解决大部分问题

发表回复

登录后回复