
vibe-security
熱門稽核程式碼庫,找出 AI 編碼助手在「vibe-coded」應用程式中常見的安全漏洞。檢查是否暴露 API 金鑰、存取控制失效(Supabase RLS、Firebase 規則)、缺少驗證、過度信任用戶端、不安全的付款流程等。每當使用者詢問安全性、想要程式碼審查、提到「vibe coding」,或當你正在撰寫或審查涉及驗證、付款、資料庫存取、API 金鑰、機密或用戶資料的程式碼時,請使用此技能——即使他們沒有明確提到安全性。當使用者說「這樣安全嗎?」、「檢查我的程式碼」、「稽核這個」、「審查漏洞」或「有人能入侵這個嗎?」時,也請觸發此技能。
稽核程式碼庫,找出 AI 編碼助手在「vibe-coded」應用程式中常見的安全漏洞。檢查是否暴露 API 金鑰、存取控制失效(Supabase RLS、Firebase 規則)、缺少驗證、過度信任用戶端、不安全的付款流程等。每當使用者詢問安全性、想要程式碼審查、提到「vibe coding」,或當你正在撰寫或審查涉及驗證、付款、資料庫存取、API 金鑰、機密或用戶資料的程式碼時,請使用此技能——即使他們沒有明確提到安全性。當使用者說「這樣安全嗎?」、「檢查我的程式碼」、「稽核這個」、「審查漏洞」或「有人能入侵這個嗎?」時,也請觸發此技能。
稽核程式碼,找出 AI 程式碼生成常見的安全漏洞。這些問題在「vibe-coded」應用程式中很普遍——這類專案藉由 AI 輔助快速開發,但往往忽略了基本的安全原則。
AI 助手經常在這些模式上出錯,導致真實的資料外洩、API 金鑰被竊取、帳單帳戶被盜刷。此技能的存在就是為了在這些錯誤上線前攔截下來。
核心原則
永遠不要信任用戶端。每個價格、使用者 ID、角色、訂閱狀態、功能旗標和速率限制計數器都必須在伺服器端驗證或強制執行。如果它只存在於瀏覽器、行動應用程式套件或請求主體中,攻擊者就能控制它。
稽核流程
系統性地檢查程式碼庫。對於每個步驟,僅在程式碼庫使用該技術或模式時載入相關的參考檔案。跳過不相關的步驟。
-
機密與環境變數 — 掃描是否有硬編碼的 API 金鑰、權杖或憑證。檢查是否透過用戶端環境變數前綴(
NEXT_PUBLIC_、VITE_、EXPO_PUBLIC_)暴露機密。確認.env已列入.gitignore。請參閱references/secrets-and-env.md。 -
資料庫存取控制 — 檢查 Supabase RLS 政策、Firebase 安全規則或 Convex 驗證守衛。這是 vibe-coded 應用程式中重大漏洞的頭號來源。請參閱
references/database-security.md。 -
驗證與授權 — 驗證 JWT 處理、中介軟體驗證、Server Action 保護和 session 管理。請參閱
references/authentication.md。 -
速率限制與濫用防護 — 確保驗證端點、AI 呼叫和昂貴的操作有速率限制。確認速率限制計數器無法被竄改。請參閱
references/rate-limiting.md。 -
付款安全 — 檢查是否有用戶端價格竄改、webhook 簽章驗證和訂閱狀態驗證。請參閱
references/payments.md。 -
行動裝置安全 — 驗證安全儲存權杖、透過後端代理保護 API 金鑰,以及 deep link 驗證。請參閱
references/mobile.md。 -
AI / LLM 整合 — 檢查是否暴露 AI API 金鑰、缺少用量上限、提示注入向量和不安全的輸出渲染。請參閱
references/ai-integration.md。 -
部署設定 — 驗證生產環境設定、安全標頭、source map 暴露和環境隔離。請參閱
references/deployment.md。 -
資料存取與輸入驗證 — 檢查 SQL 注入、ORM 誤用和缺少輸入驗證。請參閱
references/data-access.md。
如果進行部分審查或在特定領域生成程式碼,只需載入相關的參考檔案。
核心指示
- 僅回報真正的安全問題。不要挑剔風格或非安全相關的事項。
- 當有多個問題時,依可利用性和實際影響排序。
- 如果程式碼庫沒有使用特定技術(例如沒有 Supabase),請完全跳過該部分。
- 生成新程式碼時,主動查閱相關參考檔案,以避免一開始就引入漏洞。
- 如果發現重大問題(暴露的機密、停用的 RLS、驗證繞過),請立即在回應頂部標記——不要將它埋在長長的清單中。
輸出格式
依嚴重程度組織發現:重大 → 高 → 中 → 低。
對於每個問題:
- 指出檔案和相關行號。
- 命名漏洞。
- 解釋攻擊者可以做什麼(具體影響,而非抽象風險)。
- 顯示修正前後的程式碼。
跳過沒有問題的區域。最後以優先排序的摘要結束。
範例輸出
重大
lib/supabase.ts:3 — Supabase service_role 金鑰暴露在用戶端套件中
service_role 金鑰會繞過所有列層級安全。任何人都可以從瀏覽器套件中提取它,並讀取、修改或刪除資料庫中的每一列。
// 修正前
const supabase = createClient(url, process.env.NEXT_PUBLIC_SUPABASE_SERVICE_KEY!)
// 修正後 — 在用戶端使用 anon 金鑰;service_role 僅屬於伺服器端程式碼
const supabase = createClient(url, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!)
高
app/api/checkout/route.ts:15 — 價格取自用戶端請求主體
攻擊者可以透過修改請求來設定任何價格(包括 $0.01)。價格必須在伺服器端查詢。
// 修正前
const session = await stripe.checkout.sessions.create({
line_items: [{ price_data: { unit_amount: req.body.price } }]
})
// 修正後 — 在伺服器端查詢價格
const product = await db.products.findUnique({ where: { id: req.body.productId } })
const session = await stripe.checkout.sessions.create({
line_items: [{ price: product.stripePriceId }]
})
摘要
- 服務角色金鑰暴露(重大): 任何人都可以繞過所有資料庫安全。請立即輪換金鑰,並僅在伺服器端使用。
- 用戶端控制的定價(高): 攻擊者可以以任何價格購買。請使用伺服器端價格查詢。
生成程式碼時
這些規則也適用於主動防範。在撰寫涉及驗證、付款、資料庫存取、API 金鑰或用戶資料的程式碼之前,請查閱相關參考檔案,以避免一開始就引入漏洞。預防勝於偵測。
參考資料
references/secrets-and-env.md— API 金鑰、權杖、環境變數設定和.gitignore規則。references/database-security.md— Supabase RLS、Firebase 安全規則和 Convex 驗證模式。references/authentication.md— JWT 驗證、中介軟體、Server Actions 和 session 管理。references/rate-limiting.md— 速率限制策略和濫用防護。references/payments.md— Stripe 安全、webhook 驗證和價格驗證。references/mobile.md— React Native 和 Expo 安全:安全儲存、API 代理、deep links。references/ai-integration.md— LLM API 金鑰保護、用量上限、提示注入和輸出清理。references/deployment.md— 生產環境設定、安全標頭和環境隔離。references/data-access.md— SQL 注入防護、ORM 安全和輸入驗證。





