網誌
代理原生後端

發佈日期 更新日期

Arag 及 Shouryamaan

為甚麼 AI 生成的應用程式仍需要更好的後端基礎設施

以 Markdown 閱讀

AI 生成的應用程式仍然需要任何應用程式都必須具備的後端控制:伺服器端密鑰、授權、租戶隔離、安全寫入、遷移、預算、可觀察性和復原。能夠生成可運作的 UI 和 API 程式碼,並不能證明這些控制已經存在。

最快的審查方式是第二位用戶測試。建立兩位用戶、兩個租戶和兩筆紀錄,再嘗試跨越第一位用戶展示中從未接觸過的每一道邊界。

能運作的展示只證明一條路徑

程式開發代理通常會針對它看得到的驗收測試作出最佳化。如果工作要求「建立一個筆記應用程式」,能夠新增和列出筆記的表格可能就符合要求。但工作可能從未問過:一位用戶能否請求另一位用戶的筆記 ID、逾時的新增操作會不會重複執行,或瀏覽器套件是否含有管理密鑰。

這同時是規格和基礎設施問題。審查必須把缺少的限制轉化為可執行的要求。

密鑰只能留在伺服器端

搜尋生成的 JavaScript、source map、流動應用程式套件、已提交的環境檔案、日誌和錯誤回應,確認其中沒有供應商或管理憑證。公開客戶端只能取得明確設計為公開使用的憑證,或限於目前用戶和操作的短效權杖。

OWASP API Security Top 10將物件授權失效和身份驗證失效視為兩種不同風險。身份驗證確認調用者是誰,授權則決定該調用者能否存取這個物件。

代理安全指南示範如何分開代理的建置憑證與部署後應用程式的身份。

每一條數據路徑都必須隔離租戶

只在一張數據表加入 tenant_id 並不足夠。每次讀取、更新、刪除、檔案查詢、快取鍵、背景工作、搜尋索引、即時頻道和匯出,都必須帶有相同的租戶邊界。

測試直接物件參照:

  1. 以租戶 A 登入並建立一筆紀錄。
  2. 改以租戶 B 登入。
  3. 透過每一條公開 API 路徑,以 ID 請求租戶 A 的紀錄。
  4. 對更新、刪除、匯出、檔案和訂閱端點重複測試。
  5. 在適當情況下,確認伺服器對不存在和未獲授權的紀錄傳回相同而且不洩露資訊的結果。

多租戶代理基礎設施指南一併解釋數據庫、配額和共用狀態的邊界。

寫入需要防止重播

網絡失敗會產生結果未知的情況:伺服器可能已經提交寫入,但客戶端沒有收到回應。如果代理或瀏覽器在沒有冪等鍵的情況下重試,一次點擊就可能產生兩筆訂單、訊息、部署或費用。

每項寫入都要定義邏輯操作 ID、儲存第一次執行的結果、拒絕同一鍵配搭衝突參數,並記載保留期限。代理重試與檢查點中的復原流程,處理調用端無法判斷第一次嘗試是否完成的情況。

遷移需要復原路徑

生成的遷移所受到的審查往往少於生成的應用程式碼,儘管它可能改變每一筆現有數據。套用遷移前:

  • 檢查生成的 SQL,而不只看 ORM 指令;
  • 找出鎖定、數據表重寫和破壞性子句;
  • 使用與生產環境規模相近的數據副本執行;
  • 在轉換期間測試新舊兩版應用程式;
  • 為部署到一半的情況定義回復或向前修復方式。

不要因為某個程式開發代理自己編寫了遷移,就授予它不受限制的生產環境 DDL 權限。Supabase 的 MCP 安全指南明確建議使用開發項目、限制項目範圍,並避免接觸生產環境數據。任何後端工具都應採用相同規則。

成本需要由伺服器強制設限

按照租戶和工作流程限制模型調用、付費工具、數據庫請求、背景工作、儲存空間和執行時間。只在提示中要求代理壓低成本,並不會形成實際限制。

計算每個完成成果的成本時,也要計入失敗和重試執行。AI 代理基礎設施成本指南提供計算方式和預算控制點。

基礎設施應直接提供安全路徑

後端預設就應傳回範圍受限的憑證、結構化錯誤、冪等寫入、狀態紀錄和有界限的服務存取。審查可以找出一次缺失,平台合約則能防止每個新項目重複遺漏同一項控制。

Cohesivity 為程式開發代理提供隔離租戶,以及受支援後端服務的伺服器端存取路徑,而且不會洩露上游供應商憑證。應用程式本身仍要負責數據列層級授權、批准規則和安全的結構描述設計。

邀請任何人之前,先執行第二位用戶測試

在可隨時棄用的環境中使用兩位用戶和兩個租戶,嘗試跨租戶 ID、重複寫入、過期憑證、失敗的遷移和耗盡的限制。逐項記錄確切請求和伺服器結果。

下方提示會在不更動任何內容前,把這項審查轉化為逐檔審計。