作為一款宣稱比 PocketBase 執行速度更快的 Rust 應用伺服器,TrailBase 的最新發布在開發者社群引發了廣泛討論,特別是關於其安全性實現和文件清晰度方面的問題。
發現安全漏洞
在 TrailBase 的入門文件中發現了一個嚴重的安全問題。社群成員指出存在潛在的 SQL 注入漏洞。這個問題源於在 SQL 查詢中直接使用字串插值,而不是透過可用的引數系統使用預處理語句。這個基本的安全疏忽引發了人們對該專案整體安全實踐的嚴重擔憂。
我可以想象 trailbase.js 的內容可能會避免 SQL 注入:透過讓 parsePath(…).query.get(…) 返回帶有轉義 SQL 的 toString() 方法的物件。這雖然會引發更多問題,我確信這種情況不太可能,但這是可能的。
安全隱患:
- 查詢示例中存在未經保護的SQL字串插值
- 缺少預處理語句的使用
- 文件層面的安全疏漏
文件清晰度問題
多位開發者對 TrailBase 的文件方法表示不滿。主要批評集中在文件過度依賴與 PocketBase 和 Supabase 的比較,這使得不熟悉這些平臺的新手難以理解 TrailBase 的核心功能。社群指出,即使是像單檔案這樣的基本概念在文件中仍然含糊不清。
技術區別和許可證考慮
TrailBase 透過使用 Rust(相比 PocketBase 使用 Go)和實現 V8 JavaScript 執行時環境來區別於類似解決方案,支援現代 ES6 特性,而 PocketBase 僅支援 ES5 環境。然而,該專案選擇 OSL-3.0 許可證引發了關於其生產可行性的討論,一些開發者指出其與 AGPL 的相似性以及可能對商業使用造成的複雜性。
與 PocketBase 的主要技術差異:
- 程式語言: Rust 對比 Go
- JavaScript 執行時: V8 (ES6)對比 Goja (ES5)
- 許可證: OSL-3.0 對比 MIT
- 資料庫:基於 SQLite
部署和資料庫考慮
該專案基於 SQLite 的架構引發了不同反響。一些人讚賞單檔案資料庫方法的簡單性,而其他人則質疑缺乏整合備份解決方案,如用於 S3 備份的 Litestream。單檔案營銷造成了混淆,社群最終澄清這指的是部署二進位制檔案,而不是包括配置和資料庫檔案在內的整個應用程式結構。
總之,儘管 TrailBase 憑藉其現代技術棧和效能宣告展現出潛力,但已發現的安全漏洞和文件問題表明,該專案在被認為適合生產環境之前還需要重大改進。社群在識別這些問題方面的積極參與表明了在開源專案中進行全面安全審查和清晰文件編寫的重要性。
參考連結:TrailBase:基於 Rust、SQLite 和 V8 構建的超快速開源應用伺服器,具有型別安全 API、內建 JS/ES6/TS 執行時、身份驗證和管理介面