我用AI编写4700行代码,两天内击退WordPress垃圾邮件大规模攻击

作者的WordPress网站遭遇大规模垃圾注册攻击,数据库膨胀至3.9万用户账号、72万条元数据记录,托管商发出警告。作者联合Claude Cowork与OpenAI Codex展开反击:用Claude诊断漏洞、分析数据库,用Codex编写修复代码。整个周末投入约20小时,新增4700行代码,修补8处注册漏洞,构建多阶段垃圾账号清理工具,最终删除逾1.5万个垃圾账号,成功恢复网站正常运行。

大约一个月前,我的主网站遭遇了一波新型攻击。垃圾邮件发送者将用户名字段当作消息载体,在其中塞满了假域名和加密货币诱饵,例如"查询余额""提取资金""BTC转账""立即操作"等内容。WordPress随即将这些内容以"新用户注册"邮件的形式转发给我,一发就是数千封。

彼时,我的服务器部署了一款商业安全产品,该产品本应保护我的WordPress网站免受注册垃圾邮件的侵害,但实际上它完全无法胜任这项工作。

作为一款专为WordPress设计的安全插件的开发者,这款插件的核心功能是帮助用户限制网站访问权限。既然我购买的安全产品已经失效,我决定直接在现有插件中内置反垃圾邮件功能。

我迅速截取了Gmail收件箱中数百封垃圾邮件的截图,将其输入Codex,请它编写一套可以快速部署到现有工具中的缓解程序。Codex完成后,我将增强版插件部署到用户端和我自己的网站上。

攻击在不到一小时内就从活跃状态彻底归于沉寂。那是六月初的事。然而上周,攻击又卷土重来,来势凶猛。

多年来,我发现垃圾邮件发送者有不断升级的习惯。他们先向各网站发出试探,寻找容易利用的漏洞。一旦找到,便立即加以利用。但封堵漏洞后,攻击并不会就此停止,他们会持续探测网站,寻找新的入口。我相信,AI如今已被不法分子用于加深探测力度。

周五晚上,我的托管服务商告知我,网站数据库已膨胀至超过39,000个用户账户,用户元数据记录更是超过700,000条。服务器每时每刻都在经历数以千计的注册反弹请求。我的收件箱和垃圾邮件文件夹以相当快的速度持续接收各种变体邮件,用户账户管理后台更是严重堵塞,页面根本无法加载。

服务商礼貌地通知我,必须清理数据库并阻止此类情况继续发生。言下之意不言而喻:若我无法阻止攻击蔓延至其数据库基础设施,我的网站将面临被驱逐的命运。

本文记录的,正是我利用这个周末,借助Claude Cowork和OpenAI Codex奋力反击垃圾邮件攻击的全过程——在现有安全产品中构建了更为强大、更具针对性的缓解功能。

作为副业项目,我拥有一款功能相当完善的WordPress网站安全产品。去年,我曾借助Codex大幅提升其能力。

当时,我升级到了每月200美元的ChatGPT Pro套餐,功能更新上线后便降回每月20美元的ChatGPT Plus套餐。目前我正在积极开发一系列Apple生态系统产品,为此使用的是每月100美元Max套餐的Claude Code。

我同时使用两款AI,一方面是为了向大家报告各自的使用体验,另一方面则刻意让两款AI各守一方代码——Codex负责WordPress产品,Claude Code负责Apple产品。

由于攻击发生在由WordPress产品保护的网站上,这个项目理应交给Codex处理。然而,我实在不想为此额外花费100美元升级ChatGPT套餐。于是我决定将两款AI结合使用:Claude Cowork负责不需要写代码的分析部分(因为它拥有更大的AI容量),Codex则专注于代码编写。

事实证明,这种组合配合得出奇地好。

我的反击始于一场网络安全版的"打地鼠"游戏:攻击者究竟是如何突破防线的?

在此前的缓解方案中,我已封锁了用户注册页面,部署了垃圾邮件信号检测(机器生成或无意义的用户名、格式错误的邮件地址),同时设置了蜜罐字段以捕获机器人,屏蔽了无有效MX记录的注册请求,并将注册行为与StopForumSpam黑名单进行比对。

然而,垃圾邮件发送者还是大批杀回来了。我花了约一个小时逐一排查网站,未能发现任何明显漏洞,于是决定祭出AI。

严格来说,这个安全产品归属于ChatGPT Codex的管辖范围。但由于我使用的是20美元的Plus套餐,不想让它承担超出用量限制的工作。而Claude的使用窗口宽裕得多,我便决定分工协作:Claude负责诊断与审查,Codex负责编写代码。事实证明,这是一套极为默契的组合。

我向Cowork说明了问题,让它展开探测。起初它希望获得管理员登录权限,但我解释道,垃圾邮件发送者无需管理员权限便能找到可利用的漏洞。AI似乎理解了这一点,随即开始对我的网站发起持续测试。

经过大约40分钟的深度扫描,它发现了若干问题。其中最突出的一个是:虽然我的用户注册页面设有CAPTCHA验证,但垃圾邮件发送者可以提交特定URL来触发注册流程,完全绕过CAPTCHA验证。这个漏洞必须修复。

总计下来,Claude共发现了八处不同的漏洞,这些漏洞使攻击者得以在绕过测试的情况下完成注册。

接下来,我导出了网站数据库,并将其输入Claude Cowork,请它从历史上能突破防护的垃圾账户中提炼识别信号和行为规律。

Cowork发现了大量标志着账户存在垃圾嫌疑的信号,还注意到垃圾邮件发送者会将URL填写在个人简介字段(而非URL字段)中。

Claude协助我锁定了网站的漏洞所在,并明确了需要为插件新增的功能。随后,我请Claude为我撰写一份提示词,以便输入Codex,让它针对已识别的漏洞实施修复。

第一稿出来后,Claude出了差错,给出的提示词会导致极具破坏性的代码生成。经过仔细审读,我向Claude指出了问题所在,它随即重新撰写了提示词,这次不再具有破坏性,而是真正有帮助的。这再次提醒我:AI的所有输出都必须逐一核实,尤其是用于驱动其他AI的提示词。

万事俱备,是时候将项目移交给Codex了。

Codex是OpenAI旗下的代码智能体,可通过每月20美元的ChatGPT Plus套餐直接使用。在此前的一次编程会话中,我发现Codex能力相当强大,但在不升级套餐的情况下,它能完成的工作量相当有限。当时我不得不升级到每月200美元的Pro套餐,用了整整一个月。现在,已经有了不同的升级档位可供选择。

我想验证一件事:能否仅凭现有的ChatGPT Plus订阅,构建出应对这波垃圾邮件攻击所需的全部代码。

简而言之:我做到了,但险些功亏一篑。

我用Codex构建了三大核心系统:第一,扩充用于检测垃圾邮件的信号库;第二,在所有可能触发注册的入口——包括标准WordPress注册表单及REST API、XML-RPC、admin-ajax、自定义注册表单等公开入口——统一部署注册CAPTCHA验证;第三,开发了一套多阶段垃圾账户批量清理工具,该工具综合运用所有垃圾账户信号分析功能来判断账户性质,并新增了完整的用户界面模块,支持可断点续传的浏览器驱动批量分析与删除操作。

整个过程是一场高强度的周末突击编码。工具每晚部署一小时,就有更多垃圾账户持续涌入。我在与时间赛跑,必须在服务器被垃圾邮件发送者或托管服务商关停之前完成部署。

周六,我两度被踢出Codex。第一次等待时间不长,我趁机吃了个午饭。但第二次的等待时间会长达数小时,这是我承受不起的。Codex显示了使用量耗尽的提示,点击"升级"可购买更多使用额度。但我完全搞不清楚额度与实际工作量之间的换算关系。

就在这时,我注意到了一个"重置用量"的选项——这是我之前没见过的。我决定点击试试。重置后,我重新回到Codex,继续编写代码。周六我共使用了两次重置,奋战到不得不睡觉为止,每次重置大约能额外换来45分钟的编码时间。

周日的重心从编码转向测试。要知道,我需要清理的是超过39,000个用户账户和700,000条用户元数据记录。我将数据库副本从服务器迁移到本地开发机,并在其上运行账户清理工具。由于需要调用远程StopForumSpam黑名单,每次测试运行大约耗时两小时。

第一轮账户清理测试结束后,我用第三次重置换来了45分钟的代码修改时间。当再度被锁定时,恰好准备好进行第二轮两小时的清理测试。这段时间加上午饭的时间,正好弥补了最终编码冲刺前的强制等待期。

周日下午晚些时候,我终于准备好将新模块部署到服务器上。上传新版本后,账户垃圾邮件攻击就此销声匿迹。经过清理,我在39,314个用户账户中删除了15,069个,在723,799条用户元数据记录中删除了275,567条。

这不仅让托管服务商满意,也让我终于能够再次正常访问用户账户管理后台。

需要特别说明的是,我对自己仅凭每月20美元的ChatGPT Plus账户完成了如此大量的工作感到震惊。我原本做好了购买额外使用额度的准备,但最终并不需要。

整个周末,通过与Codex协作,我新增了4,700行代码,删除了170行,净增4,530行,涵盖138个新增程序函数。这还不包括同期完成的所有CSS和HTML代码、验证与测试程序,以及大量界面开发工作。

对于一位经验丰富的全职程序员来说,这些工作可能需要25到45个工程日,乃至长达八周时间。Claude的数据库分析工作则还需要额外的四到五天。

而我在一个周末内全部搞定了,这一切都包含在我每月120美元的Claude和ChatGPT订阅费用之内。如果只靠自己,根本不可能连续两个月只做缓解编码工作。

不过有一点必须说清楚:这种协作式AI编程并不意味着可以高枕无忧、全程交给AI。我一直在两款AI之间来回穿梭——趁一款AI运算时切换到另一款继续工作。周六我投入了整整12小时,周日又至少投入了8小时。全程积极的监督和参与对整个项目而言至关重要。

编码过程中,Codex犯了不少需要纠正的错误。Claude有一次失误甚至差点毁掉我的整个服务器;另有一次,它带着我在完全错误的方向上白白浪费了三个小时,最终才发现根本走不通。

但请不要低估这场攻坚战的成果。我一个人用一个周末完成了通常需要一名全职程序员花费数月才能完成的大规模工作。

还有一项难以量化但同样重要的收获。过去多年,每当服务器出现问题,我都是孤军奋战。许多时候,服务器运行的是我自己的代码,应对攻击和故障只能靠我一个人扛。寻求外援意味着高昂的咨询费用;即便朋友愿意伸出援手,也需要花费数天时间让对方熟悉情况。

所以,我总是独自应战。我的妻子深知那种沮丧和压垮感有多么沉重。

但这次不同。这次,我身边有Codex和Cowork两位协作伙伴。这种差别对我来说意义深远,怎么形容都不为过。是的,它们有时会显得有些死板;是的,这并不是我计划中的周末消遣;是的,每过一小时问题未能解决,压力就多一分,因为意味着更多入侵还在持续。

但最终,我不再是一个人。我拥有两位能在几分钟内快速上手的得力伙伴,帮我在两天内完成了诊断、开发、测试和部署这一整套大规模干预。我提出问题,得到的(大多数情况下)是切实有用的回应。

我问Claude:"能否为Codex准备一个说明性提示词?"也问Codex:"有哪些分析任务是你希望我交给Claude处理的?"它们都给出了回应。两款AI都知晓对方是团队成员,也都没有因为彼此是竞争产品而产生任何抵触。

我们常常谈论AI带来的岗位压缩,尤其是对程序员和写作者的冲击。但作为一名独立从业者,我独自承担着自己小公司的全部技术债务,以及超过20,000个服务器安装用户的维护压力。即便在生成式AI发展至今的阶段,能够获得AI的协助,依然让我大开眼界。

这个周末的高强度鏖战让我疲惫不堪、有些精神恍惚,但走出这场网络攻击危机后,我有了一种此前从未有过的感受:这个过程其实很有趣。

这有多出乎意料?真的,竟然有点好玩。

Q&A

Q1:Claude和Codex在这次反击垃圾邮件攻击中分别承担了什么工作?

A:Claude Cowork主要负责诊断分析,包括扫描网站漏洞、分析数据库中的垃圾账户特征,并为Codex准备对应的修复提示词。Codex则专注于代码编写,新增垃圾邮件检测信号、为所有注册入口部署CAPTCHA验证,并开发了多阶段批量垃圾账户清理工具。两者分工明确、协同配合,共同在一个周末内完成了通常需要数月的开发工作。

Q2:Codex的"重置用量"功能是怎么回事,普通用户也能用吗?

A:2025年6月11日,OpenAI通过X平台推出了重置功能。根据OpenAI的说法,重置次数并非通过日常使用积累所得,也独立于已购买的额度之外。符合资格的Plus和Pro用户在功能上线时获得了一次免费重置机会。OpenAI会因多种原因发放重置次数,例如修复Bug、庆祝里程碑事件,或者仅仅是随机赠送。已储存的重置次数通常在发放后30天内到期。

Q3:这次WordPress垃圾邮件攻击最终清理了多少账户和数据?

A:经过周末的集中开发与部署,作者在39,314个用户账户中删除了15,069个垃圾账户,同时在723,799条用户元数据记录中删除了275,567条。新版插件部署后,账户垃圾邮件攻击彻底停止,网站用户管理后台也恢复了正常访问,托管服务商的数据库压力得到显著缓解。

来源:ZDNET

0赞

好文章,需要你的鼓励

2026

07/02

15:52

分享

点赞

邮件订阅