Vibe Coding 資安自查指南
用 AI 幾句話生出一個能動的 app,很爽。但「能動」跟「安全」是兩件事——AI 幾乎每次都把功能寫對,卻常常忘記幫你把門鎖上。這份清單告訴你,最常沒鎖的是哪幾道門、怎麼自己檢查。
這不是 AI 變笨,是它太會「讓功能動起來」。
AI 學的是「大多數人怎麼寫」,而網路上大多數範例程式為了教學方便,都把安全檢查省掉了——登入、權限、輸入過濾這些「看不到效果」的部分,範例裡通常不寫。於是 AI 學會了寫出「跑得起來的樣子」,卻沒學會「把門鎖上」。你看到畫面會動、功能正常,就以為好了;但那些沒鎖的門,是外人進得來的地方。共同的病徵只有一句話——功能會動,但門沒鎖。
每一道都對照國際標準 OWASP 的分類,並附「怎麼自己查」。
頁面或 API 沒有檢查「你是誰」就直接給資料。AI 最常見的第一名盲點:它把路由寫得語法完全正確,就是漏掉那一行驗證身分的守衛。
怎麼查:把登入資訊拿掉,直接用網址打你的 API(例如 /api/orders),如果還拿得到資料,就是沒鎖。
API 金鑰、密碼、資料庫連線字串被寫死在前端程式碼裡,或不小心 commit 進 git、上傳到 GitHub。也包括密碼用了太弱的雜湊。
怎麼查:在瀏覽器按 F12 看原始碼有沒有金鑰;用 git log -p 搜 key、secret、password;確認 .env 有進 .gitignore。
沒有流量限制(rate limit)。有人寫個迴圈狂打你的 API、你的 AI 功能、你的簡訊發送——帳單爆炸、服務癱瘓。用了 AI API 的更痛,一晚燒掉幾萬塊的故事每週都在發生。
怎麼查:問你的 AI「這個 endpoint 有沒有 rate limiting?」如果它支支吾吾,就是沒有。
使用者輸入的東西被當成指令執行。傳統是 SQL injection、跨站腳本(XSS);AI 時代多了一種——別人把惡意指令藏在你的 AI 會讀到的內容裡(網頁、文件、留言),劫持你的 AI 幫他做壞事。
怎麼查:所有外來內容都當「不可信」——它是資料,不是給你系統的指令。表單、留言、AI 讀進來的網頁全部要過濾與跳脫。
上線時把不該對外的東西一起放進了公開目錄——備份檔(.bak)、.env、.git 資料夾、暫存檔。主程式顧好了,這些「後院的箱子」卻沒上鎖,一個網址就抓得到裡面的舊版與機密。
怎麼查:確認部署目錄裡沒有 .env、.git、.bak;讓伺服器對這些檔名一律回 404(不是靠「沒人知道網址」僥倖)。
源自開源檢核表 benavlabs/vibe-check——單靠一層都會漏。
在專案放一份 AGENTS.md/CLAUDE.md,明文寫「每個 API 都要驗身分、金鑰不准寫進前端、輸入一律過濾」,讓 AI 生成時就守規矩。
用一份審查提示詞,叫 AI(或專用掃描器)把整個專案掃一遍,列出上面五類問題。機器查得快、不漏行。
資料庫的存取權限、.env 有沒有外洩、能不能被暴力破解——這些要人親手測,AI 看不到執行環境。
這些是社群做的、專門掃 AI 生成碼的開源工具,不用付費就能上手。
專抓 Cursor/Bolt/Lovable/Replit 生成碼的漏洞。pip install 後 vibe-audit scan . 一行掃完。
掛進 GitHub,每次 PR 自動做 SAST + 機密偵測。24 行 YAML、30 秒設定好。
17 類漏洞的完整檢核表 + 規則檔 + 人工測試步驟。想系統性自查看這份。
資安公司寫給 vibe coder 的白話清單,適合完全非技術背景的人入門。
如果你不只用 AI 寫程式,還讓 AI agent(Claude Code、Cursor、自動化流程、MCP 工具)幫你「動手做事」,風險升一級。
真實案例(2025 年 10 月):有人只是在一個 GitHub PR 的標題裡藏了一句惡意指令,就同時劫持了三個生產環境的 AI 編碼 agent,讓它們把自己專案的機密洩漏出去。agent 不只是生成文字,它會採取行動——所以「輸入沒過濾」在 agent 場景裡是會出人命的。
國際標準 OWASP LLM Top 10(2025) 專門列了 AI 應用特有的十類風險,用 agent 的人最該盯這幾條:
核心原則就一句:最小權限——只給 AI 完成當下任務所需的權限與工具,別把整台機器的鑰匙都交給它。
.env 在 .gitignore 裡,且 git 歷史沒 commit 過任何金鑰。vibe-audit scan . 或 VibeSafe,把報告看完。AGENTS.md/CLAUDE.md 寫明資安規則。.bak、.env、.git 能被網址直接抓到。如果你是我們幫忙裝過系統的朋友——這是我們對你的系統守的底線,也歡迎你拿去對照自己的專案。