Gizli Bilgi Güvenliği
Sıkı güvenli kodlama kuralları, zero-trust bulut depolama modeli ve yerel gizli bilgi koruma mekanizmaları.
Zero-Secret Politikası
Güvenlik, VibeBasket için temel önceliklerden biridir. Kurulan MCP sunucularının kullandığı OpenAI veya GitHub API token’ları gibi hassas anahtarlar bundle veritabanına asla taşınmaz ve burada önbelleğe alınmaz.
Zero-Trust Bulut Politikası
Bundle manifest’leri son kullanıcı çalışma zamanı gizli bilgilerini içermez. Host edilen uygulama seçilen katalog metadatasını ve isteğe bağlı olarak şifrelenmiş yönetici yedekleme kimlik bilgilerini saklayabilir; ancak kurulan MCP’lerin veya ajan araçlarının çalışma anında kullandığı API anahtarlarını saklamaz.
Bunun yerine bir bundle yerelde uygulanırken CLI, hedefin ihtiyaç duyduğu credential anahtarlarını çözer ve bunları güvenli şekilde eklemek için kullanıcıya yerel terminalde istemde bulunur. Host edilen uygulama bu çalışma zamanı değerlerini hiç görmez.
Sonraki secret yönetimi hedef adaptöre göre değişir. Çoğu IDE, yerel config dosyalarında satır içi MCP env veya header değerleri ister; bu nedenle CLI secret’ları operatörün makinesinde çözüp yalnızca o makinenin yerel IDE config’ine yazar. Codex, uzak MCP auth header’ları için kısmi bir istisnadır: doğal config formatı environment-key referansını desteklediğinde VibeBasket ham token’ı TOML içine yazmak yerine bu referansı tercih eder.
Hız Sınırlama
Tüm açık API endpoint’leri, IP bazlı izleme ve otomatik temizlik içeren sliding-window hız sınırlayıcıyla korunur. Proxy kaynaklı IP başlıklarına yalnızca self-host eden kişi proxy güvenini açıkça etkinleştirirse güvenilir.
| Endpoint | Limit |
|---|---|
| /api/health | 120/min |
| /api/catalog | 120/min |
| /api/auth/* | 60/min |
| /api/bundle/[id] | 60/min |
| /api/stacks | 30/min |
| /api/admin/stats | 30/min |
| /api/catalog/status | 5/min |
| /api/bundle POST | 20/min |
Güvenlik Başlıkları
Tüm yanıtlar sertleştirilmiş güvenlik başlıkları içerir. Production ortamında HTML rotaları nonce tabanlı bir Content-Security-Policy alır; böylece Next.js güvenli biçimde hydrate olurken toplu inline script çalıştırmaya kapı açılmaz. Ayrıca HSTS tüm deployment boyunca etkin tutulur.
| Başlık | Değer |
|---|---|
| X-Frame-Options | DENY |
| X-Content-Type-Options | nosniff |
| Referrer-Policy | strict-origin-when-cross-origin |
| X-Permitted-Cross-Domain-Policies | none |
| X-Download-Options | noopen |
| Permissions-Policy | camera=(), microphone=(), geolocation=() |
| Strict-Transport-Security | max-age=63072000; includeSubDomains; preload |
| Content-Security-Policy | default-src 'self'; script-src 'self' 'nonce-<request-nonce>' 'strict-dynamic' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; object-src 'none'; manifest-src 'self'; frame-ancestors 'none' |
Admin Panel Güvenliği
/admin adresindeki yönetim paneli, OAuth ile doğrulanmış oturumların arkasında korunur. Erişim, ADMIN_OAUTH_EMAILS ortam değişkeninde listelenen e-posta adresleriyle sınırlandırılır; yalnızca doğrulanmış ve allowlist’te bulunan hesaplar yönetici olur.
| Özellik | Açıklama |
|---|---|
| Katalog Senkronu | Upstream kaynaklardan registry senkronizasyonunu manuel tetikler. |
| Yedek Yönetimi | Herhangi bir yapılandırılmış depolama altyapısına veritabanı yedekleri oluşturur, listeler, indirir ve geri yükler. |
| FTS5 İndeks Sağlığı | Bütünlüğü doğrulamak için full-text arama indeks satır sayısını katalog tablosuyla karşılaştırır. |
| Veritabanı Sağlık Kontrolü | Veritabanı bütünlük tanılarını çalıştırır ve bozulmayı erken yakalar. |
| Zorla Temizlik | Süresi dolmuş bundle’ları, eski session’ları, verification token’larını ve sync kayıtlarını temizler, ardından vacuum çalıştırır. |
| Kullanıcı Özeti | Kayıtlı kullanıcı sayılarını, kaydedilmiş stack telemetrisini ve popülerlik sıralamalarını inceler. |
| Yönetici E-postaları | Virgülle ayrılmış yönetici e-posta allowlist’ini site config içinde saklar. |
Tüm yönetici işlemleri yalnızca server-side çalışır ve doğrulanmış bir yönetici oturumu gerektirir. /api/admin/stats endpoint’i için hız sınırı dakikada 30 istektir.