用 Vibe Coding 做出第一個小工具,興奮地丟給朋友試,結果第一天就出包?這篇帶你分清楚自己用、給朋友用、開始收錢、存了別人的個資,每一級最少要補什麼!
假設你用 Vibe Coding 做出一個能新增任務的小工具。畫面順,按鈕也會動。隔天,第一位使用者連按兩次送出,清單出現兩筆相同任務。
如果這個工具只有你自己在用,這算不上問題,刪掉一筆就好。把同一顆按鈕換成「付款」,同樣連按兩次,就是一張信用卡被扣了兩次錢。程式一行都沒變,變的是誰在用它,以及出錯時誰受傷。
所以我看 Vibe Coding 做出來的第一版,第一個問題不問它會不會動,先問它準備給誰用。交給越多人用,越不能只看它會不會動。自己用,會動就夠;給朋友用,要補登入和權限;開始收錢,要補「同一筆不能算兩次」和備份;存了別人的個資,連資料庫的預設設定都要一張表一張表檢查。
這張圖由下往上讀。分級的依據是出事時誰受傷,跟程式寫了幾行無關。最關鍵的是第一道台階:在自己的帳號底下,很多問題根本不會出現,要等別人進來才第一次被看見。
快速回答 Vibe Coding 讓做出來的成本大幅降低,但交給越多人用,越不能只看它會不會動。分級要補的防護取決於「出事時誰受傷」:自己玩會動就夠;給朋友用要補登入和資料隔離;開始收錢與存個資,必須補防重複扣款、權限檢查、備份與還原演練。
Vibe Coding 原本只適用週末專案:AI 產生的程式碼有 45% 含資安漏洞
這個詞有明確的出處。2025 年 2 月 2 日,曾任 Tesla AI 總監的 Andrej Karpathy 在 X 上寫,有一種新的寫程式方式,他叫它 vibe coding:完全順著感覺走,忘了程式碼的存在。同一則貼文的後半段常被略過:他說這拿來做用完即丟的週末專案還不錯。
九個月後,Collins 英語詞典把 vibe coding 選為 2025 年度詞彙,定義是「用自然語言提示 AI,協助寫出電腦程式」。「適合週末專案」那半句沒有跟著進字典。這個詞從一個人的週末玩法變成大家做產品的方式,路上掉了的,正好是使用範圍的那個但書。
我支持用 Vibe Coding 起步。沒寫過程式的人,一個晚上就能看見自己的想法長什麼樣子,幾年前做不到。麻煩出在第一版跑起來之後:畫面會動,很容易讓人以為它已經可以交出去。
資安公司 Veracode 在 2025 年 7 月的報告把這個落差量了出來。他們讓 100 多個大型語言模型完成 80 個寫程式的題目,再用資安檢測去測產出的程式碼,45% 的樣本含有 OWASP Top 10 列出的漏洞。OWASP 是一個開放的資安社群,Top 10 是它整理的十大網站資安風險。
報告裡另一句話更值得記下來:模型越來越會寫出能跑的程式,寫出安全的程式卻沒有進步,大模型也沒有比小模型好多少。能跑和安全是兩回事,而 Vibe Coding 的回饋只告訴你前一件。你看得到畫面、按得到按鈕,看不到伺服器有沒有檢查「這個人能不能做這件事」。這一題要你自己去問。
這也是為什麼下一節的三起事故,沒有一起是程式跑不動,出事的都是權限和資料沒守住。
三個真實資安事故:沒關資料庫權限、Agent 誤刪正式庫、只在前端藏按鈕
用途分級有它的根據:現實裡出事的地方,和用途對得很整齊。
存了別人的資料:資料庫的門沒關。2025 年 3 月,一位工程師在某個 AI 網站生成平台的作品展示區掃了 1,645 個應用,其中 170 個(約一成)的資料庫,任何人拿著網頁裡本來就公開的那把鑰匙,就能讀整張資料表,有些還能寫入。外洩的東西包括使用者的 Email、電話、付款與訂閱狀態,以及開發者自己的第三方服務金鑰。這個問題後來登記成正式的資安漏洞編號 CVE-2025-48757,嚴重度 9.3 分(滿分 10)。
原因是一個沒打開的設定。這類平台的網頁直接跟資料庫說話,所以資料庫必須自己判斷「這一列資料能不能給這個人看」,工程上叫資料列層級的權限(Row-Level Security)。這個開關沒開,網頁裡那把公開鑰匙就等於萬能鑰匙。平台方的立場是,每個應用的資料保護由建它的人負責。這句話對用平台的人不好聽,我卻認為它說對了:你按下發布的那一刻,就成了這份資料的負責人。
開始處理正式資料:Agent 刪了正式資料庫。2025 年 7 月,SaaStr 創辦人 Jason Lemkin 用 Replit 的 AI agent 開發應用,agent 在他宣告凍結程式碼的期間刪掉了正式資料庫,還一度告訴他無法還原,後來證明可以。Replit 執行長事後宣布,開始自動把開發用和正式用的資料庫分開,並提供一鍵還原整個專案。這個修法值得記住:讓 agent 根本碰不到正式資料,比叮嚀它「不要碰」可靠。權限要怎麼收,可以接著讀〈Claude Code 權限要怎麼設?一直按「允許」真的安全嗎?(2026 完整懶人包)〉。
給別人用:權限只藏在畫面上。這一類不用舉特定事件,它太普遍了。OWASP 2025 年版 Top 10 把「存取控制失效」排第一,他們測過的應用 100% 都找得到某種存取控制問題。典型的樣子是:畫面上把刪除按鈕藏起來,伺服器卻照樣接受刪除請求;或是把網址裡的編號從 101 改成 102,就看得到別人的資料。
三件事有一個共同點:開發者在自己的畫面上測,一切看起來都正常。問題要等別人進來,或程式碰到真正的資料,才第一次浮出來。
四級上線檢查表:不用看懂程式碼也能自己驗完權限、防重送與備份
下面是我會用的最低標準。它是累加的,收錢那一級要做的,包含前兩級的全部。每一項都附一個不必看懂程式碼也能做的檢查。
- 版本紀錄;金鑰不放進網頁程式
- 故意改壞一次,確認回得去上一版
- 登入;權限在伺服器或資料庫檢查
- 開兩個帳號,用 B 去開 A 的資料網址
- 同一筆不算兩次;開發與正式分開;備份
- 連按付款兩次;從備份還原一次到測試環境
- 每張表預設不公開;只收必要欄位;外洩要通知
- 登出後直接向資料庫要資料,看拿不拿得到
表裡有三個詞值得多說一句,因為它們最常被跳過。
「同一筆不算兩次」,工程上叫冪等(idempotency):同一個請求送一次和送十次,結果要一樣。開頭那顆按鈕就是反例。把按鈕送出後變灰,只擋得住手快的人,擋不住網路自動重試和使用者重新整理頁面。可靠的做法有兩層。資料庫加一條唯一約束,意思是「這個欄位不准出現兩筆一樣的值」,例如同一張訂單編號只能存在一次;程式則替每次操作附一個編號,伺服器記住處理過哪些編號,同一個編號再送來,就回傳第一次的結果。金流公司 Stripe 的 API 就是這樣設計的。
「備份」要驗的是還原。沒有還原過的備份,你不知道它能不能用,也不知道要花多久。Replit 那次事故裡,連 agent 都說錯了能不能還原;你至少要自己試過一次。
「外洩要通知」在台灣是法律問題。個資法本來就要求,個資被竊取或洩漏時,要查明後通知當事人;2025 年 11 月公布的修正條文,再加上企業向個人資料保護委員會通報的義務,沒做到可以直接開罰,施行日期由行政院另定。一旦你的小工具開始存別人的電話和地址,它就不再只是你的作品。
實戰踩坑案例:我的會員中心上線後才發現的三個儲存空間與權限漏洞
我替這個網站做會員中心,程式也是 AI 寫的。〈Plan、Build、Verify、Ship 是什麼?AI 寫程式變快後,進度要怎麼算?(2026 完整懶人包)〉寫過上線之後才冒出來的幾個問題:存放學員作品圖片的空間公開設定不對,圖片破了;管理員上傳檔案時送出的驗證資訊不對;在平台管理介面設定的檔案類型限制沒有作用,最後改用資料庫的權限規則擋副檔名。
這三個問題都和「誰能看、誰能傳什麼」有關,也都在程式寫完、合併之後,到了真實環境才看得到。會員中心存的是學員的購課紀錄和作品,落在表格最上面那一級。這次經驗讓我更相信分級:AI 寫程式的速度不會因為用途變高而變慢,該補的東西卻會一級一級變多。
四個分級盲點:風險看的是出事後果而非專案規模,醫療金融需交由專家
第一,分級看的是後果,不看規模。一個 50 行的報名表單,只要存了別人的電話,就在最上面那級;一個很大的個人工具,只要只有你自己用,就留在第一級。
第二,用途會變。朋友圈的小工具哪天開始收錢,就要回頭把收錢那一級補齊。我最擔心的時刻是升級的那一天,因為通常沒人察覺用途已經變了。
第三,平台內建的安全掃描可以先跑,但別把它當成終點。前面那個資料庫外洩事件裡,發現問題的工程師認為,平台後來推出的安全掃描沒有處理到根本原因。檢查「規則有沒有設」,和檢查「規則有沒有用」,是兩種檢查。
第四,表格只到一個人能自己負責的程度。醫療、金融、未成年人的資料,需要的是懂法規與資安的專業人員,一張表撐不住。
這篇的事實查到 2026 年 10 月。下次更新時我會看兩件事:生成平台是否把資料庫權限改成預設開啟、而且會檢查規則有沒有效;以及 Veracode 這類測試裡,資安通過率有沒有跟著寫程式的能力一起往上走。如果兩件都發生,最上面兩級要補的東西會少很多。
如果你做的東西裡本身就有 AI 功能,例如聊天、摘要、會替人做事的 agent,上線前還有另一組失敗要驗,接著讀〈AI Demo 很成功,為什麼一上線就出事?五條失敗路徑一次看懂(2026)〉。
結論:發布前先問「這套工具交給誰用」,再決定補齊哪一級防護
回到那顆連按兩次會多一筆任務的按鈕。
如果它只在你自己的電腦上,留著也無妨,你知道它在那裡。如果你準備把網址傳給朋友,先開第二個帳號,試試看能不能看到第一個帳號的任務。如果哪天它旁邊多了一個付款按鈕,就先讓連按兩次只留下一筆,再把網址交出去。
按鈕還是同一顆。改變的是,你在按下發布之前,先想過它要交給誰。
常見問題
什麼是 Vibe Coding?
Vibe Coding 是指透過大語言模型直接說出需求與感受,由 AI 自動完成程式碼生成與部署的開發方式。它大幅降低了寫程式的門檻,讓沒有深入工程背景的人也能在數小時內做出會動的應用雛形。
做出會動的 demo 之後,第一個該補的防護是什麼?
如果只是自己用,會動即可;一旦給朋友或外部人士使用,第一個要補的是身分驗證與資料隔離。確認 A 使用者登入後絕對看不到 B 使用者的資料,且所有資料庫存取都在後端透過權限規則(例如 Row Level Security)嚴格防護。
為什麼「出事時誰受傷」是決定補到哪一級的唯一判準?
程式碼的行數與功能多寡不是安全標準。如果系統出錯只會讓你自己重新整理頁面,那麼防護可以維持最低限度;如果系統出錯會導致外部使用者的信用卡被重複刷卡、或敏感個資外洩,受傷的是別人,你就必須補齊事務一致性、審計日誌與還原演練。
什麼時候應該把 Vibe Coding 專案打掉重構?
當新增一個小功能卻頻繁改壞三個舊功能、AI 每次給出的修復都會引發新的迴圈錯誤時,代表程式碼的架構已經失去局部性。此時與其在雜亂的程式碼上繼續疊加 prompt,不如將現有資料模型與邊界規則抽離出來,重新建立乾淨的模組。
延伸閱讀
- AI Demo 很成功,為什麼一上線就出事?五條失敗路徑一次看懂(2026)
- Plan、Build、Verify、Ship 是什麼?AI 寫程式變快後,進度要怎麼算?(2026 完整懶人包)
- Claude Code 權限要怎麼設?一直按「允許」真的安全嗎?(2026 完整懶人包)
- MCP server 該不該裝?安裝前一定要做的權限檢查(2026 資安懶人包)
參考資料
詞的來歷
- Andrej Karpathy, “There's a new kind of coding I call ‘vibe coding’…”(X, 2025-02-02) https://x.com/karpathy/status/1886192184808149383
- Collins Dictionary, Collins Word of the Year 2025: AI meets authenticity as society shifts(2025-11-06) https://blog.collinsdictionary.com/language-lovers/collins-word-of-the-year-2025-ai-meets-authenticity-as-society-shifts/
事件與數據
- Veracode, AI-Generated Code Poses Major Security Risks in Nearly Half of All Development Tasks(新聞稿,2025-07-30) https://www.veracode.com/press-release/ai-generated-code-poses-major-security-risks-in-nearly-half-of-all-development-tasks-veracode-research-reveals/
- Jens Wessling / Veracode, We Asked 100+ AI Models to Write Code. Here's How Many Failed Security Tests.(2025-07-30) https://www.veracode.com/blog/genai-code-security-report/
- CVE Program, CVE-2025-48757(2025-05-30 發布) https://www.cve.org/CVERecord?id=CVE-2025-48757
- Matt Palmer, Statement on CVE-2025-48757(2025-05-29) https://mattpalmer.io/posts/statement-on-CVE-2025-48757/
- The Register, Vibe coding service Replit deleted user's production database(2025-07-21) https://www.theregister.com/2025/07/21/replit_saastr_vibe_coding_incident/
- The Register, Replit makes vibe-y promise to stop its AI agents making vibe-y coding mistakes(2025-07-22) https://www.theregister.com/2025/07/22/replit_saastr_response/
- OWASP Foundation, A01:2025 Broken Access Control(OWASP Top 10:2025) https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/
做法與法規
- Stripe, Idempotent requests(API Reference,2026-10-16 檢視) https://docs.stripe.com/api/idempotent_requests
- 理律法律事務所,〈個人資料保護法部分條文修正公布〉(2025 年 11 月公布之修正重點) https://www.leeandli.com/TW/NewslettersDetail/7532.htm
- 全國法規資料庫,《個人資料保護法》第 12 條(2025-11-11 修正公布版:通知當事人與通報主管機關) https://law.moj.gov.tw/LawClass/LawSingle.aspx?pcode=I0050021&flno=12
留言0
登入後就能留言。
登入