Etki
Satır Düzeyinde Güvenlik (RLS) [S1] düzgün şekilde uygulanmazsa saldırganlar veritabanındaki kayıtları okumak, güncellemek veya silmek için uygulama mantığını atlayabilir. Bu genellikle Kişisel Tanımlayıcı Bilgilerin (PII) veya hassas uygulama verilerinin yalnızca genel anonim API anahtarına erişimi olan kullanıcılara ifşa edilmesiyle sonuçlanır.
Temel Neden
Supabase, [S1] verilerinin güvenliğini sağlamak için temel olan veritabanı düzeyinde veri erişimini yönetmek için Postgres Satır Düzeyi Güvenliği'ni kullanır. Bir Next.js ortamında geliştiricilerin, sunucu tarafında [S2] oluşturma sırasında güvenliği korumak için tanımlama bilgilerini ve oturumları doğru şekilde işleyen bir Supabase istemcisi oluşturması gerekir. Güvenlik açıkları genellikle şu durumlarda ortaya çıkar:
- Tablolar RLS etkinleştirilmeden oluşturulur ve bu tablolara [S1] genel anon anahtarı aracılığıyla erişilebilir hale gelir.
- Supabase istemcisi, Next.js'de yanlış yapılandırılmıştır ve kullanıcı kimlik doğrulama belirteçlerini [S2] veritabanına düzgün şekilde aktaramamaktadır.
- Geliştiriciler, istemci tarafı kodunda yanlışlıkla
service_roleanahtarını kullanır; bu, tüm RLS [S1] politikalarını atlar.
Beton Düzeltmeleri
- RLS'yi etkinleştirin: Supabase veritabanınızdaki [S1]'deki her tablo için Satır Düzeyinde Güvenliğin etkinleştirildiğinden emin olun.
- Politikaları Tanımlayın: Kullanıcının UID [S1]'sine göre erişimi kısıtlamak amacıyla
SELECT,INSERT,UPDATEveDELETEişlemleri için belirli Postgres politikaları oluşturun. - SSR İstemcilerini kullanın: Next.js'de sunucu tarafı kimlik doğrulamasını ve [S2] oturum kalıcılığını doğru şekilde yöneten istemciler oluşturmak için
@supabase/ssrpaketini uygulayın.
FixVibe bunu nasıl test ediyor?
FixVibe, konuşlandırılan uygulama ve repo kontrolleri yoluyla bunu zaten kapsamaktadır. Pasif baas.supabase-rls modülü, Supabase URL'sini ve aynı kaynaklı JavaScript paketlerinden anonim anahtar çiftlerini keşfeder, PostgREST'ten genel tablo meta verilerini ister ve müşteri verilerini değiştirmeden anonim verilerin açığa çıkmasını onaylamak için sınırlı salt okunur seçimler gerçekleştirir. Repo taramaları ayrıca ENABLE ROW LEVEL SECURITY olmadan genel tablolar oluşturan SQL geçişlerini işaretlemek için repo.supabase.missing-rls'yi çalıştırır ve gizli taramalar, tarayıcıya ulaşmadan önce hizmet rolü anahtarının açığa çıkmasını arar.
