Vibe Coding 的 5 種常見資安漏洞:用 Claude Code 一次健檢全找出來
前言
用 vibe coding 做網站,最容易被漏掉的就是資安。這篇直接整理出 5 種我自己和身邊的人最常踩到的 vibe coding 資安漏洞,每一種都用白話講清楚:它是什麼、為什麼會發生、不補的話會怎樣。
這篇是寫給用 AI 工具自己做網站或小工具的人看的,不用會寫程式,看完你就會知道自己的網站有哪些地方可能沒顧好。文章最後,我也會示範怎麼用 Claude Code 幫自己的網站做一次資安健檢——這 5 個漏洞,就是我這樣掃出來的。
為什麼 vibe coding 特別容易留下資安漏洞
不是 AI 不安全,而是 AI 只會解決你「說出口」的需求。你說「做一個後台登入」,它就給你一個能登入的後台;你不會特別說「如果有人一直猜密碼怎麼辦」,所以它也不會主動幫你想。功能照常運作、畫面看起來好好的,但該擋的沒擋。
資安漏洞最可怕的共同點,是它們「不會報錯」。一般的 bug 會壞給你看,資安破口不會——網站每天正常運作,漏洞安安靜靜地開著,直到被人利用的那天你才會發現。再加上現在的攻擊多半是機器人在網路上自動掃描,看到沒鎖的門就試,你的網站知名度高不高,跟會不會被掃到完全沒關係。這就是為什麼即使只是個公開讓大家逛的小網站,也得把基本的門鎖好。
先搞懂:一個網站其實是好幾個工具串起來的
要看懂漏洞藏在哪,得先知道一件事——網站不是「一個東西」,而是好幾個工具串在一起,每一塊都是 AI 幫你接起來的。以我自己的網站為例:
Claude Code 負責所有看得到的部分:部落格、訂閱頁、聯絡頁,還有只有我能進去的後台。n8n 接手背後的自動化,例如有人訂閱之後的後續處理。Google Sheets 被我當成資料庫,存文章和訂閱名單。Groq 則提供網站上那個 AI 對話功能的回話能力。
關鍵在這裡:資安不是「某一個地方」的問題,而是每一個工具交接的地方都要檢查。下面這 5 種漏洞,剛好就分布在這些不同的門上。
Vibe coding 最常見的 5 種資安漏洞
漏洞一:後台登入「猜錯不會被鎖」
很多 vibe coding 做出來的後台,登入頁可以無限次嘗試密碼。有人寫個小程式,一秒鐘試上百組,整夜不停地猜,網站也不會攔。正常該有的是「連續猜錯幾次就先擋一陣子」。少了這道機制,密碼設得再複雜,也只是被猜中的時間長短而已。
漏洞二:登入後的「通行證」沒有上鎖
你輸入帳號密碼登入成功後,網站不會要你每翻一頁就重打一次密碼,而是發給你的瀏覽器一張通行證(也就是 token,一串證明「你已經登入過」的代號)。之後你每點一個後台頁面,瀏覽器就自動把這張通行證夾在請求裡遞給伺服器——而夾帶它的那個小口袋,就是 cookie(瀏覽器自動保管、每次連線自動帶上的儲存格)。
偷懶的做法,是把你的密碼原文直接當成通行證存進 cookie。問題是 cookie 有可能被惡意程式偷讀(這類攻擊叫 XSS),通行證一旦被看到,等於密碼也一起外流。
安全的做法,是發一張蓋了數位防偽章的通行證——這種有防偽章的通行證,業界標準格式就是 JWT(JSON Web Token)。它的「防偽章」是一段用伺服器秘密金鑰算出來的簽章(signature):通行證上只寫看不出密碼的資料(會員編號、權限、到期時間),而且只要有人偷改其中一個字,簽章就對不上,伺服器一驗就知道是偽造的,立刻擋下。
漏洞三:對外開放的 AI 功能會被灌爆帳單
網站上那種誰都能用的 AI 對話框,背後每回一次話都是要付費的。如果沒設任何使用上限,只要有人寫程式對它瘋狂發問,一個晚上就能讓帳單爆掉。這不是資料外洩,是「荷包外洩」,但一樣很痛。
漏洞四:聯絡表單、訂閱功能被機器人灌垃圾
跟上一個同根同源:聯絡表單、電子報訂閱這些對外開放的功能,如果沒設「同一個人短時間內最多送幾次」,就可能被機器人在幾分鐘內灌進成千上萬筆垃圾資料。輕則名單變髒、信箱被洗版,重則拖垮整個網站。設一個合理的使用上限,是公開功能的基本門檻。
漏洞五:該檢查身分的功能,忘了檢查
有些功能本來只該給登入後的自己用——例如後台上傳圖片。但很常見的情況是,這道「確認你是不是管理員」的檢查被漏掉了,等於把鑰匙留在門口,外人也能拿來用。這種「忘了加一道檢查」是 vibe coding 最典型的破口:因為功能照常會動,你很難憑肉眼看出它少鎖了一道門。
好消息:這 5 種漏洞都有標準解法
看到這裡你可能有點緊張,但其實不用太擔心。這 5 種都是「老問題」,每一種都有成熟、固定的補法——重點是,你不需要自己寫程式,全都能用「描述」的方式請 AI 幫你加上。先把它們整理成一張對照表:
| 漏洞 | 不補會發生什麼 | 怎麼補(用講的就行) |
|---|---|---|
| 登入沒鎖 | 被程式整夜暴力猜密碼 | 「連續猜錯五次就先擋十分鐘」 |
| 通行證沒上鎖 | 通行證被偷看,密碼跟著外流 | 改用「看不出密碼、被改就失效」的簽章式通行證 |
| AI 功能無上限 | 被狂發問,帳單一夜爆掉 | 「同一個人每分鐘最多用幾次」 |
| 表單沒設限 | 名單、信箱被機器人灌爆 | 同樣設使用上限,再加一道簡單驗證 |
| 忘了檢查身分 | 後台功能被外人拿去用 | 每個後台功能進來前都先確認「是不是本人」 |
這裡面有個會一次解掉好幾項的關鍵觀念,叫做「設使用上限」。不管是 AI 對話、聯絡表單還是訂閱,只要是「對外開放、又會花錢或寫入資料」的功能,都該有一條「同一個人短時間內最多用幾次」的線。這一招,等於同時把上面第三、第四兩種漏洞補掉一大半。
登入那兩項也有共通的心法:補登入漏洞,重點不是把密碼設得更難,而是讓「猜」這件事本身變得不划算——猜幾次就被擋,再快的程式也跑不動。通行證則是換成一張「蓋了防偽章」的版本,伺服器一看就知道是不是自己發的、有沒有被動過手腳。
至於「忘了檢查身分」,沒有什麼巧妙解法,就是回頭把每一個只該給自己用的功能,都補上一句「先確認是不是本人」。麻煩,但必要。在實際幫客戶建流程時我也養成一個習慣:每加一個後台功能,第一件事就是先想「這個如果被外人打開,會怎樣」,再決定要鎖到多緊。
知道「有解法」是一回事,知道「自己到底中了哪幾項」又是另一回事。光看清單,你很難確定自己的網站實際有哪些洞。所以接下來,我把這件事整個交給了 Claude Code。
我怎麼用 Claude Code 幫自己的網站健檢
上面這 5 種漏洞,不是我憑空列的,是我回頭幫自己的網站做健檢時,一個一個被掃出來的。做法其實很簡單:我打開 Claude Code,請它換一個立場——「假設你是想搞破壞的人,你會從這個網站的哪裡下手?」用攻擊者的視角去問,比問「我的網站安全嗎」具體太多。
它會把每個對外的功能一塊一塊檢查,然後列出哪裡有問題、嚴重程度如何。健檢也不全是壞消息——它同時告訴我,有些地方我沒特別交代,AI 預設就做對了:表單是用純文字方式寫入(避免一種常見的表格被動手腳的風險)、網站只允許顯示來自特定來源的圖片、機密設定也都沒被寫死在程式裡。
在實際幫客戶建自動化流程的經驗裡,我越來越確定:問題不在「AI 不安全」,而在「你沒要求的,它不會多做」。更棒的是,找到洞之後,補洞跟做功能一樣可以用「描述」的方式請它處理——「後台登入連續猜錯五次就先擋十分鐘」,講清楚,它就幫你加上。你不需要看懂程式碼,只需要知道有這些洞該補。
常見問題 FAQ
Q1:我只是做個公開讓大家逛的網站,真的需要管這些嗎?
需要,而且可能比你想的更需要。現在大部分的攻擊不是有人盯上你,而是機器人在整個網路上自動掃描,看到沒鎖的門就試。你的網站知名度高不高,跟會不會被掃到完全沒關係。公開網站因為任何人都進得來,反而最容易被掃到。把基本的門鎖好,不是因為你很重要,而是因為不鎖的代價可能是帳單爆掉或資料被灌爆。
Q2:你說的那個「通行證上鎖」,是不是就是常聽到的 JWT?
概念上就是。JWT 可以想成一張「蓋了防偽章的通行證」:伺服器發出去之後,只要有人動過上面的內容,伺服器一看就知道被改過、立刻作廢;而且它不會把你的密碼直接寫在上面。這跟「直接拿密碼當通行證」差很多。對只有自己或少數人用的後台,這種通行證特別重要——因為一旦通行證被偷看,等於密碼也跟著外流了。
Q3:我不會寫程式,這些漏洞我自己補得起來嗎?
補得起來,因為補洞跟做功能一樣,可以用「描述」的方式請 AI 處理。你不需要看懂程式碼,只需要說清楚要什麼,例如「後台登入連續猜錯五次就先擋十分鐘」。真正的關鍵不在技術,最大的風險從來不是補不起來,而是根本不知道有洞要補。知道要問,問題就解決一半了。
Q4:怎麼讓 Claude Code 幫我找出漏洞?
最有效的方式,是直接請它換立場:「假設你是想搞破壞的人,你會從這個網站的哪裡下手?」用攻擊者的視角去問,比問「我的網站安全嗎」具體太多。你也可以一塊一塊問——後台登入有沒有問題?對外開放的功能會不會被濫用?上傳檔案的地方有沒有檢查身分?把網站拆成幾道門,一道一道檢查,更容易問出真正的破口。
Q5:vibe coding 做的網站,到底能不能正式上線?
能,但上線前一定要做一次資安健檢。Vibe coding 讓「做出功能」變得很快,這是真實的好處;但它沒有改變「上線前要檢查安全」這件責任。把「能用」當成起點、把「健檢過」當成上線門檻,這樣的網站才算真的準備好了。
總結
這 5 種漏洞——登入沒鎖、通行證沒加密、AI 功能被灌爆、表單被灌垃圾、該檢查身分的卻沒檢查——共同點都是「功能會動,但門沒鎖」。Vibe coding 改變的是「把功能做出來」的速度,它沒有、也不可能改變「要為安全負責」這件事。
AI 會幫你把功能做出來,但不會主動幫你把門鎖上——鎖門這件事,得你自己開口要求。而整個健檢過程,我一樣沒有自己去讀程式碼,是請 Claude Code 用攻擊者的視角把網站掃一遍,再用描述的方式請它一個一個把洞補起來。我的工作不是動手,而是知道該問什麼問題。這大概就是 vibe coding 最真實的樣子:你不需要會所有技術,但你需要知道,有些事情不問,AI 就不會替你做。