Vibe Coding 安全嗎?真正的風險與發布前必查的事項
Vibe coding 對個人工具與原型來說是安全的,對有真實使用者的正式應用程式也可以安全,但前提是你要加上「描述一下、看看能不能用」這種做法會跳過的檢查。真正危險的問題從畫面上是看不出來的:使用者可以打開彼此的資料、祕密金鑰躺在瀏覽器裡、公開表單沒有任何限制。本文說明真正會造成麻煩的風險、如何處理機密、需要多少審查,以及發布前應該花 30 分鐘完成的檢查。
完整的技術清單請參閱我們的 AI 建置應用程式安全檢查清單。本頁是較短、較實用的版本,適合不閱讀程式碼的人。
為什麼 vibe coding 有它自己的風險
做 vibe coding 時,你是靠實際使用來判斷應用程式好不好。這能抓到按鈕壞掉、版面難看的問題,卻抓不到那些只有在別人以不同方式使用時才會出現的問題:陌生人、機器人、或是在網址列裡亂改參數的好奇使用者。
AI 模型寫出的程式碼看起來合理,大多數也都沒問題。但它們是依照你的要求來最佳化,例如「讓儀表板顯示我的專案」,卻可能不會主動加上你沒有提到的保護,例如「而且只顯示我自己的」。解決之道不是停止使用 vibe coding,而是明確地要求這些保護,然後實際測試。
你的應用程式風險有多高?快速衡量
| 你的應用程式 | 風險 | 你需要什麼 |
|---|---|---|
| 只有你自己使用的個人工具,不含敏感資料 | 低 | 讓金鑰不要出現在程式碼裡,大致如此而已。 |
| 公開的網站或附表單的著陸頁 | 低到中 | 表單限制、機器人防護、頁面中沒有機密 |
| 讓人註冊並儲存自己資料的應用程式 | 中 | 本頁所有內容 |
| 付款、健康、財務、兒童或身分證件資料 | 高 | 本頁所有內容,外加開發者審查 |
請誠實判斷你屬於哪一列。許多應用程式一開始屬於第一列,但在沒有人決定的情況下逐漸漂移到第三列。
真正會造成麻煩的風險
1. 使用者能看到彼此的資料
這是 AI 建置應用程式中最常見、也最嚴重的問題。頁面只向每位使用者顯示他自己的紀錄,所以看起來一切正常。但只要有人在網址列或請求中改掉 ID,伺服器就會把任何一筆紀錄交出來。因為你總是用自己的帳號測試,所以從來不會注意到。
如何檢查: 建立兩個帳號。以使用者 A 登入,打開 A 的一筆紀錄並記下網址。改以使用者 B 登入一個無痕視窗,貼上該網址。你應該看到「找不到」,而不是 A 的資料。
提示詞:
檢查每個讀取、修改或刪除使用者資料的伺服器端端點。每個端點都必須確認已登入的使用者有權存取該特定紀錄。列出這些端點,說明每一個如何檢查,並修正任何沒有檢查的端點。
2. 機密放錯了地方
機密是任何能授予存取權限的東西:AI 或電子郵件服務的 API 金鑰、資料庫密碼、付款服務商的私密金鑰。只要它出現在會在瀏覽器中執行的程式碼裡,任何人都能打開開發者工具把它複製走。如果它被提交到公開的儲存庫,機器人幾小時內就會找到。
如何檢查: 直接問 AI。
列出這個應用程式使用的每一把 API 金鑰、權杖與密碼。對每一個,告訴我它存放在哪裡,以及是否曾被送到瀏覽器。把任何位於程式碼中或前端的,移到伺服器端的機密設定中。
3. 公開表單與端點沒有任何限制
聯絡表單、註冊功能與 AI 功能都會被機器人找到。沒有限制的話,你會收到大量垃圾內容、假帳號,或是 AI API 被呼叫數千次而產生的高額帳單。
提示詞:
為註冊、登入、聯絡表單,以及每個會呼叫 AI 服務的端點加上速率限制。在公開表單中加入蜜罐欄位。告訴我你選擇了哪些限制值。
4. 過度信任瀏覽器
任何由瀏覽器決定的事情,使用者都可以改:價格、折扣、測驗答案、「是否為管理員」的旗標。真正重要的規則必須在伺服器端執行。
提示詞:
找出所有由瀏覽器決定、但應該由伺服器決定的地方:價格、總額、權限、角色、分數。把這些檢查移到伺服器端。
5. 沒有退路
一次錯誤的變更或一個惡意的人都可能刪除資料。如果沒有備份、也無法還原,一個小失誤就會變成永久的損失。請確認你的工具為程式碼提供檢查點,為資料庫提供備份。參見如何備份應用程式的資料庫。
正確處理機密
機密造成的可避免損害比其他任何事都多,所以規則集中列在這裡:
- 絕對不要把真正的金鑰貼到聊天中。 聊天內容會被儲存、分享,也會被截圖。請把金鑰放在工具的機密設定或環境變數中。(什麼是環境變數與機密。)
- 從伺服器呼叫付費服務。 瀏覽器向你的伺服器發出請求,由伺服器用金鑰去呼叫 AI 或付款服務。
- 測試與正式使用分開用不同的金鑰,這樣外洩的測試金鑰就無法動到真實的錢。
- 在 AI 與電子郵件服務商的後台設定花費上限。
- 懷疑金鑰外洩時立即輪替。 建立新金鑰、更新機密,然後刪除舊金鑰。
在 Mythex 上,機密存放在專案設定中、程式碼之外,代理程式可以使用這些機密,而不會讓數值出現在聊天中。我們的保護 API 金鑰指南涵蓋更多服務商。
你需要多少程式碼審查?
Vibe coding 意味著你不會逐行閱讀程式碼。你不必這樣做,但有些程式碼確實應該有人看。
- 個人工具: 除了本頁的檢查之外不需要其他審查。
- 有使用者帳號的應用程式: 審查登入與資料存取的運作方式。你可以請 AI 用白話文解釋,然後確認解釋內容與你的預期相符。
- 涉及付款或敏感資料的應用程式: 請開發者檢視驗證、權限、付款處理,以及任何儲存個人資料的部分。這是幾個小時的工作,不是重寫。
即使沒有開發者,這個提示詞也很有用:
用白話文解釋,這個應用程式如何判斷使用者是誰,以及他們被允許看到什麼。指出相關的檔案。然後列出任何你希望安全審查人員檢查的項目。
我們關於如何審查 AI 產生的程式碼的指南說明審查人員會注意什麼,你也可以直接交給負責審查的人。如果你的工具允許匯出程式碼或同步到 GitHub,安排審查就很容易;在 Mythex 上,這兩項功能都包含在 Pro 方案中。
發布前 30 分鐘檢查
在把連結分享給你圈子以外的人之前,請先完成這份檢查。
存取(10 分鐘)
- 兩個帳號、兩個瀏覽器:B 能否透過網址打開 A 的紀錄?不應該能。
- 登出後,直接輸入每一頁的網址。私人頁面應該把你導向登入頁。
- 以一般使用者身分打開管理員網址,應該會被拒絕。
機密(5 分鐘)
- 用上面的提示詞,問 AI 每一把金鑰存放在哪裡。
- 打開應用程式,檢視頁面原始碼,搜尋「key」、「secret」和「token」。
表單與濫用(5 分鐘)
- 所有表單都空白送出一次、輸入超長文字送出一次,並且快速連續送出兩次。
- 確認註冊、登入以及任何 AI 功能都有速率限制。
資料與復原(5 分鐘)
- 知道資料存放在哪裡,以及如何還原。
- 確認你可以把程式碼還原到先前可以正常運作的版本。
法律與基本事項(5 分鐘)
- 如果你會收集個人資料,請加入隱私權政策並說明收集哪些資料。參見如何撰寫服務條款與隱私權政策。
- 確認發布的應用程式使用 HTTPS。大多數建置工具(包括 Mythex)都會為你處理。
如果全部通過,你的早期上線就算狀況良好。每次對登入、角色或資料做大幅變更後,請重新執行第 1 到第 5 步。
vibe coding 平台會保護什麼、不會保護什麼
好的平台會處理大部分的基礎設施:HTTPS、隔離的工作區、每個專案獨立的資料庫、機密儲存、備份與還原。Mythex 會為每個專案提供私有的工作區與資料庫,把機密放在程式碼之外,並在每次成功的變更後儲存檢查點,讓你可以復原。
但沒有任何平台能知道你應用程式的規則。只有你知道客戶不應該看到彼此的發票,或是某張優惠券只能使用一次。這些規則必須寫進你的提示詞中,並且透過測試加以確認。
簡短的結論
Vibe coding 的安全程度,取決於你加上的檢查。如果只是個人工具,把金鑰放在程式碼之外,然後盡情享受就好。若涉及他人的資料,每次上線前都要完成上面的 30 分鐘檢查,而付款與敏感資料則需要開發者的把關。想看這些風險在真實專案中的樣子,請閱讀我們的 vibe coding 範例;想從一開始就帶著這些檢查來建置,請依循如何用 vibe coding 打造應用程式。
常見問題
Vibe coding 安全嗎?
用來做個人工具或原型、且不含敏感資料時是安全的。但若你的應用程式會讓其他人註冊、儲存資料或付款,就只有在補上 vibe coding 常會跳過的檢查時才算安全:伺服器端的存取規則、不放在程式碼裡的機密、公開表單的限制,以及對處理金錢或個人資料部分的審查。
Vibe coding 做出的應用程式最大的安全風險是什麼?
存取控制失效:已登入的使用者可以讀取或修改其他使用者的資料,通常只要在請求中改掉某個 ID 就能做到。當你只用自己的帳號測試時,這個問題永遠不會出現,因此特別常見。請刻意用兩個帳號來測試。
AI 產生的程式碼會洩漏我的 API 金鑰嗎?
會,如果金鑰最後出現在會在訪客瀏覽器中執行的程式碼裡,或是被提交到公開的儲存庫。請把金鑰放在工具的機密設定或環境變數中,從伺服器端呼叫外部服務,並要求 AI 列出每把金鑰被用在哪裡。
Vibe coding 的應用程式一定要找開發者審查嗎?
個人工具或早期原型不需要。在你直接收款、儲存健康、財務或兒童資料,或是讓大量使用者進入之前,請找開發者審查。若能匯出程式碼或授權 GitHub 存取,安排審查會容易得多。
我的程式碼與資料在 vibe coding 平台上安全嗎?
這取決於平台,請閱讀它的安全與隱私頁面。以 Mythex 為例,每個專案都在自己私有的工作區與獨立資料庫中執行,機密存放在程式碼之外,而檢查點讓你可以還原有問題的變更。不過,你應用程式本身的邏輯仍然需要本指南中的檢查。