卡兹克大佬网站被攻击?新手Vibe Coding上线安全指南!保姆级教程

大家好,我是卡卡罗特。

AI赛道头部大V卡兹克做了一个实时抓取最新AI信息的网站,叫 AI Hot。

网站流量大增之后,很快就遭到了黑客攻击。这两天也有人一直在攻击他的网站。

他也是边干边学,然后这个网站才逐渐稳定。

其实这也是多数非程序员Vibe Coding项目(尤其是web项目),开放出来给大众用,必然要踩坑的地方。

现在用 AI Vibe Coding,确实能做出一个很好看、功能也很全的网站。

但是如果你真的想把它投入使用,上线给很多人用,甚至达到企业级的标准,难度还是挺大的。

因为这个里面会碰到很多问题,包括代码问题、安全问题、部署问题.....,而且很多问题你压根没听过。你也就无从下手怎么去解决这些问题了。


所以这篇文章就以卡兹克这个web项目为例,从安全角度出发跟大家分享一下,一个真正对外服务的项目,从准备到上线需要采做哪些安全措施?

上线前

Web项目都需要单独部署在一台服务器上。

服务器在主流的云服务器厂商都可以买得到,比如说腾讯云、阿里云....。

如果你是新手,直接买最便宜的就行了。

1. 服务器和端口

购买之后你会得到一个服务器的IP,比如123.123.45.678

还需要你设置一个root用户的密码。有了IP + 密码之后,就可以远程访问了。

这里密码一定要设置复杂一点,不然很可能会被别人爆破出来。

比如网站一般只需要开放 80 和 443。

SSH 使用的 22 端口也可以限制为只有自己的固定 IP 才能访问。

数据库的 3306、Redis 的 6379,更不能直接暴露在公网。

不然很容易被别人爆破密码,很危险!


2. 域名、备案和 HTTPS

域名

有了服务器之后,相当于有了一个 IP。

如果你要给其他人访问,其实也是可以的,但是要通过 IP 加端口这种方式访问。

比如通过 123.123.45.678:8080 这种方式进行访问,那肯定不行。

用户肯定不愿意记这种数字 IP,而且这样也没有品牌形象。

所以肯定要买一个域名,比如 www.baidu.com,这里的 baidu.com 就是域名。

有了这个域名之后,你就不用记住对应的 IP 了。

比如卡兹克他们公司的域名是:virxact.com

备案

如果服务器放在中国内地,网站还需要进行 ICP 备案

多人觉得备案很麻烦,其实也不简单🤣

其实还好,是填写一些网站的信息🤔。

备案通过后,所有人都可以在官方备案系统里查到你的备案信息。

比如卡兹克他们的域名查询如下:

那有人会问,是不是有了域名之后,**别人就找不到我的 IP 了?服务器是不是比较安全?**🤔

不是。

有了域名之后,照样可以解析出对应的 IP,比如 ping命令解析 一下。

这其实是计算机网络的基础知识🤔,这里不再多说。

只要域名直接指向原服务器,别人就能看到这个服务器IP。

HTTPS

没有 HTTPS 的话,浏览器一般会提示网站不安全

用户和服务器之间传输的数据没有被 TLS 加密,账号、Cookie 和提交的内容都可能被窃听或篡改。

所以要给域名配置 TLS 证书,并把所有 HTTP 请求强制跳转到 HTTPS。

证书本身不一定要花钱,Let's Encrypt 等机构可以签发免费证书,但要记得配置自动续期。

3. CDN 和源站保护

域名能访问之后,接下来要解决的是速度和源站暴露的问题。

先说 CDN,什么叫CDN?

假设我们部署的是一个单体项目 ,也就是前端代码和后端代码都放在同一台服务器里。


用户打开网页的时候,需要下载 CSS、JS、图片、字体或者 HTML 等静态文件。这些文件如果每次都从自己的服务器获取,都会占用你服务器的磁盘 IO出口带宽

比如一台常见的服务器是两核4G-3M的服务器。

换算下来,理论上的最高下载速度大约只有每秒 0.375 MB,还没算网络损耗 。如果首页静态资源加起来有 1MB,几个用户同时打开,加载速度就可能明显变慢。

CDN 做的事情,就是把这些静态资源提前缓存到离用户更近的边缘节点。

用户访问网站时,图片、CSS、JS 等文件直接从 CDN 节点返回,不需要每次都从你的服务器获取资源。

CDN有2个明显的好处:

  • 不同地区的用户打开得更快
  • 极大减少源站的带宽压力。

CDN 还有另外一个作用,就是挡在用户和源站之间。

比如 Cloudflare 这类反向代理和 CDN 服务 ,可以代理你的网站流量,并且隐藏你的源站 IP

开启代理之后,域名解析出来的不是你服务器真正的 IP,而是 Cloudflare 的边缘节点 IP。用户的请求先到 Cloudflare,再由 Cloudflare 转发给你的服务器。

这样可以挡住一部分恶意流量,也能降低源站 IP 直接暴露的风险。

但是卡兹克这个域名似乎没有开启反向代理🤔。

我找codex确认一下,确实是。这是大问题啊!

我看卡兹克的文章,说是有加CDN的,但是这里没有,不知道为什么🤔

4. 接口权限

上面说的都是一些服务器相关的一些网络层 安全的设置,下面主要是些应用层的。

如果你的网站不需要注册登录就可以操作,那就要格外小心。

读取公开内容可以不登录,但写数据库、删除数据、修改资料、发送邮件、发送短信,调用付费模型这些操作,一定要做身份认证和权限校验。

因为这些操作,很容易被侵略者拿到,然后把服务搞崩。

密钥、数据库密码和 大模型的API Key 也不能写在前端代码里,更不能直接提交到 Git 仓库。

说个有意思的事,Vibe Coding火了之后,很多人把自己的API密钥push到GitHub上,还是公开仓库,这相当于直接把钱丢路边啊!你看别人捡不捡**😅****!**


5. 缓存和限流

高频数据先缓存

我们都知道,一般网站的数据都来自数据库

如果网站的流量大,用户每次访问,都要从数据库里重新查询,那就有问题了。

攻击者可以通过代码一直调用接口,然后把数据库搞宕机。数据库都宕机了,网站基本就挂了。

所以高频数据不要每次都直接从数据库读取,可以先缓存一下。

很多编程语言和框架都有对应的内存缓存机制,从数据库读取之后放到内存里面,没有的话再从数据库读。

从内存里面读取数据,速度是比数据库快得多的多的。

除了服务器内存,也可以放到Redis中。Redis 的读取速度非常快,适合存放访问频率高、允许短时间不完全实时的数据。

最后再由数据库兜底。用户请求的流程就变成了。

用户请求 → 应用内存 → Redis → 数据库

给关键接口加限流

比直接封禁更常用的做法,是限流。

比如同一个 IP,一分钟最多访问某个接口 60 次。超过之后就返回 429 Too Many Requests,让它等一会儿再请求。

比如卡兹克这个网站是有限流的。

可以看到,上面这个限流是Nginx层面的限流。

当然,限流不能只看 IP。

登录、注册、发验证码、搜索、上传文件,不同的业务场景,接口消耗的资源完全不一样,应该分别设置限制。这些就要在项目代码中进行限流了。

6. 注册防刷

如果你的网站需要注册之后才能使用,注册这里还会踩很多坑。


假设注册时什么要求都没有,只需要填个账号密码,问题就非常大了。

攻击者会找到你的注册接口,然后用脚本批量注册 。因为这些账号信息都要存到数据库里,写数据库的并发是比较低的,批量写数据可能会把你的数据库搞崩。

你的数据库里会突然多出几倍、十几倍的新用户,而且全是没用的垃圾账号 。它们不只占用数据库空间,还可能被用来刷内容领权益消耗模型额度,甚至继续攻击其他用户。

怎么解决呢?下面提供一些常见思路**🤔****。**

第一层,图片验证码

最简单的方法是加一个文字图片验证码

但是图片验证码也可以被程序识别,或者被打码平台人工绕过。攻击者非常容易解决。

你改成这种拼图,就比较难识别了。当然,这种AI做起来也稍微比较麻烦。

第二层,邮箱验证

注册时不能只填一个用户名,而是要绑定邮箱。

用户需要填写邮箱验证码,验证这个邮箱确实能收到邮件之后,才允许注册成功。

发验证码这个接口本身也要限流。否则攻击者不一定注册账号,光是反复调用发信接口,就能把你的邮件额度打光。

第三层,临时邮箱

邮箱验证也不是终点,因为现在有很多临时邮箱

我猜很多人估计很多人没听过这个概念。

可以这么理解,有些服务提供了大量可以临时使用的邮箱地址。你在网站上拿到一个地址,就可以用它注册账号、接收验证码,用完就扔。

比如你在浏览器里面输入临时邮箱关键字,可以看到很多这样提供免费邮箱的网站。

刷新,给你一个邮箱。

临时邮箱的原理并不复杂,买一个域名,再配置一个可以接收任意前缀邮件的中转服务,理论上就能生成近乎无限的邮箱地址。

手动操作嫌麻烦,甚至还可以通过 API,用代码批量读取邮箱里的验证码。🤔

那要怎么解决呢**🤔****?**

最简单的办法,是限制只允许一些常见邮箱注册。

比如只允许 qq.com163.comgmail.com 这些邮箱域名。

但这个方案也很粗暴。因为它会误伤使用企业邮箱、自建域名邮箱的正常用户,而且攻击者一样可以批量准备常见邮箱。

当然,解决的办法是多种多样的,一般都是多种方式一起加,一起限流。

7. 内容审核

如果你的网站是UGC平台,允许用户自己发内容,那就更要小心了。

敏感内容和违禁词

用户发布的内容,必须先做敏感信息过滤。

政治敏感、色情、暴恐、赌博、诈骗,这些内容如果出现在你的网站上,不只是账号被平台封禁的问题,严重的还可能涉及法律责任。


所以用户提交的任何文本,都要经过违禁词检测。最简单的方式是接入第三方内容安全服务,各大云厂商都有对应的文本、图片、视频审核 API,可以对用户生成内容做自动机审。

但机器审核不能解决所有问题。擦边内容、谐音词、变形词,机器很容易漏掉。如果平台用户量较大,还需要配合人工审核或者先审后发的机制。

提交频率和限流

发布内容是一个高风险操作。如果不加限制,恶意用户可以用脚本短时间内大量发布垃圾内容。

所以除了注册要防刷,发布内容的接口也要加限流------同一个用户一分钟最多发几条,一天最多发几条。超过阈值就拒绝,并把异常行为记到日志里。

一点想说的

上面讲的一些只是做网站的一些基础心得,也是安全方面的冰山一角

实际上要维护运营一个网站项目,达到企业级的标准,是非常复杂繁琐的事情

比如你这个网站如果是需要做营销,那就涉及到SEO。用户根据关键词搜索你的网站才会排在前面,有更大的概率被更多人访问。

那现在有了AI之后。就有了GEO,你网站的内容可以被ChatGPT、豆包、Deepseek这种Agent识别到。

最后,叠个甲。

说这么多,不是降低大家Vibe Coding的欲望,而是提供一种学习的思路给大家🤔。边做边学,边踩坑才会学得更快 🤣

我是卡卡罗特,持续分享对你有用的AI信息~

如果感觉内容不错的话,点个赞在走呗~

相关推荐
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
数据库·人工智能·ai编程·ai工作流·企业ai
天蓝色的鱼鱼1 小时前
让 AI 写代码半年后,我发现了几个藏在项目里的安全隐患
前端·javascript·ai编程
AI大模型-小华2 小时前
2026 ChatGPT Pro + Codex 高阶开发教程:AGENTS.md、Worktree 与自动测试闭环
自动化测试·ai编程·codex·chatgpt pro·worktree·agents.md·gpt-5.5
KINGSEA_1683 小时前
Java AI Agent框架核心优势解析
ai编程
我才是银古3 小时前
OpenCode × DeepSeek 配置方案继续迭代:从能用到好用
编程开发·deepseek·ai平台·vibecoding·opencode
kyriewen16 小时前
Godot 全面封杀 Vibe Coding,作为每天用 AI 写代码的人,我反而觉得这是件好事
前端·ai编程·claude
plainGeekDev18 小时前
Claude Code 的非交互模式:一条命令当 grep 用
ai编程·claude
ZzT18 小时前
如何低成本让 Agent 自进化
openai·ai编程