Manifest,一種新型的單檔案微後端解決方案,在開發者社群引發了關於其簡化後端開發方法的廣泛討論。該工具專為快速原型開發、微服務和以CRUD為主的應用程式設計,旨在透過一個可直接整合到現有程式碼庫的單一檔案提供基本的後端功能。然而,社群對其安全模型、資料庫實現和功能限制提出了重要疑問。
安全問題凸顯實施挑戰
研究 Manifest 的開發者們發現了幾個可能對使用者構成重大風險的安全問題。最令人擔憂的一個方面是其預設許可權系統,該系統會自動為任何未指定策略的操作授予公共訪問許可權。正如一位評論者所描述的,這是一個驚人的自傷陷阱,意味著開發者必須非常小心地為每個實體和操作明確定義許可權,否則就有可能將敏感資料和操作暴露給未經身份驗證的使用者。
最初發現的另一個安全問題是使用SHA-3進行密碼雜湊,而非專為密碼儲存設計的更合適演算法。雖然 Manifest 團隊已經更新為使用bcrypt,但直到社群成員指出後,這一變更才反映在他們的文件中,這引發了人們對該專案是否真正安全優先的質疑。
Manifest 的主要特點:
- 認證系統
- 資料驗證
- 儲存能力
- 圖片調整大小
- 管理員面板
- 動態端點
- REST API
- JavaScript SDK
- Webhooks
社群識別的侷限性:
- 預設許可權模型(除非指定,否則為公開訪問)
- 缺乏適當的資料庫鎖定
- 沒有遷移工具(目前正在開發中)
- 之前使用 SHA-3 進行密碼雜湊(現已更新為 bcrypt)
- 儘管宣傳為"單檔案",但目錄結構複雜
提到的類似解決方案:
- PocketBase
- PostgREST
- Prisma + PostgREST
資料庫實現引發可靠性疑問
對 Manifest 程式碼庫的技術分析揭示了其底層資料庫實現的問題。一位開發者指出缺乏適當的鎖定機制,警告同時執行多個例項可能會導致資料損壞。這一基本架構問題表明對於有併發使用者或程序的應用程式可能存在潛在的可靠性問題。
「看起來它沒有使用鎖定機制,所以執行兩個例項會損壞你的'資料庫'...可能最好還是堅持使用sqlite!」
缺乏遷移工具也被指出是一個重大限制,儘管 Manifest 開發者回應稱,資料庫同步目前可以處理架構變更,而適當的遷移功能計劃在未來版本中實現。
與現有解決方案的比較
許多評論者將 Manifest 與類似工具如 PocketBase、PostgREST 和傳統框架進行了比較。PocketBase 作為一個經常被提及的替代方案,它遵循類似的簡化後端方法,但實現更為成熟。幾位開發者分享了在小型專案中使用 PocketBase 的積極經驗,表明它可能目前是生產環境中更可靠的選擇。
Manifest 團隊強調他們產品的差異化在於完全基於程式碼,允許開發者留在他們的IDE中,並利用像 GitHub Copilot 或 Cursor 這樣的AI工具來構建後端。與基於UI的後端服務相比,這種基於YAML的DSL程式碼優先方法被強調為特別適合AI,儘管有些人質疑在實體宣告中使用表情符號的必要性。
專案結構和開發者體驗
一些開發者對專案組織表示擔憂,指出儘管 Manifest 被宣傳為單檔案微後端,但其 GitHub 倉庫包含眾多檔案和依賴項。一位評論者分享了他評估專案質量的方法,即測量在找到實際實現程式碼之前需要深入目錄層次的程度,暗示 Manifest 在這一指標上表現不佳。
基於YAML的配置方法收到了褒貶不一的反饋。雖然一些人欣賞其簡單性,但其他人質疑設計選擇,如實體宣告中看似強制使用的表情符號,這在文件中沒有解釋。Manifest 團隊承認他們可以改進關於這些設計決策的文件。
儘管存在這些擔憂,許多開發者對這一概念及其在小規模專案、原型和最小可行產品中的潛在用途表示了興趣。Manifest 團隊一直積極參與反饋,承認問題,並表示計劃進行改進。
與許多處於測試階段的專案一樣,Manifest 提出了一種簡化後端開發的有趣方法,但在除實驗性專案之外的任何場景中採用之前,需要仔細考慮其當前的侷限性。團隊對社群反饋的響應表明,隨著專案的成熟,有增長和改進的潛力。
參考:manifest