// docs / security guides / cursor checklist
Cursor güvenlik kontrol listesi: gönderim öncesi 28 madde
Cursor ile mi inşa ediyorsunuz? Cursor'nin otomatik tamamlama, Oluşturucu modu ve Aracı özellikleri son derece güçlüdür ve öngörülebilir güvenlik kör noktaları oluşturur. Bu kontrol listesi Cursor'ye özgü modelleri hedefler: hizmet rolü anahtarı satır içi oluşturma, Composer tarafından incelenmeden oluşturulan tüm dosyalar, Aracı modu terminal komutları ve ilk güvenlik korkuluğunuz olarak <code>.cursorrules</code> dosyası. Gizli sırlar, veritabanı, kimlik doğrulama, başlıklar, dağıtım ve Cursor'ye özgü kazanımlar genelinde 28 öğe.
PRE = ön dağıtım (kaynağınızı denetleyin). DEPLOY = dağıtım zamanında. POST = dağıtım sonrası doğrulama. Öğeler FixVibe referansını, ilgili yerlerde category.check-id formundaki kimlikleri kontrol edin.
Sırlar ve API tuşları (5 öğe)
Cursor'nin otomatik tamamlama özelliği, sırların yaygın olduğu açık kaynak kod üzerinde eğitilmiştir. Model, özellikle başarısız bir kimlik doğrulama girişiminden sonra bunları serbestçe önerir.
- PRE — Write security rules into
.cursorrules. Bir satır ekleyin: "İstemci tarafı kodunda asla satır içiSUPABASE_SERVICE_ROLE_KEY,sk_live_*veya sağlayıcı kısaltmasıyla başlayan herhangi bir env değişkeni kullanmayın. Her zaman yalnızca sunucuya yönelik içe aktarmaları kullanın." Cursor.cursorrulesokur ve bunu her öneriye dahil eder. - PRE — Audit Composer-generated files. Cursor'in Bestecisi bir dosyanın tamamını oluşturduğunda (özellikle kimlik doğrulama işleyicileri), onu satır satır inceleyin. Besteci bazen yalnızca sunucuda kalması gereken satır içi env değişkenlerini kullanır. Bileşen içe aktarma işleminde
NEXT_PUBLIC_'yi veya hizmet anahtarlarına doğrudan referansları arayın. - PRE — Reject auto-imports of service clients into client components. Composer
import { supabase } from '@/lib/supabase/service''yi bir React dosyasına aktarırsa, onu hemen silin ve bunun yerine bir API uç noktası üzerinden yönlendirin. Yalnızca sunucuya yönelik içe aktarma işlemleri açıkça işaretlenmiştir; bunları atlamayın. - PRE — Scan Agent-mode commits. Aracı modu, terminal komutlarını çalıştırır ve doğrudan işlem yapabilir. Bir Agent çalıştırması sırasında gizli görünen dizelerin işlenmediğinden emin olmak için
git log --oneline -20vegit diff HEAD~5'yi denetleyin. - POST — Run secrets.browser-storage. Dağıtılan URL üzerinde pasif tarama. JS paketinde bir servis anahtarı görünürse, onu hemen döndürün — Cursor'nin otomatik tamamlaması muhtemelen onu satır içine almıştır.
Veritabanı erişim kontrolü (4 öğe)
Besteci sıklıkla çalışan kimlik doğrulama kodu oluşturur ancak RLS'yi atlar; "çalışıyor" anı, insanları eksik politika uygulamasına karşı kör eder.
- PRE — Force Cursor to generate migrations with RLS.
.cursorrulesiçinde: "HerCREATE TABLE public.*geçişiALTER TABLE ... ENABLE ROW LEVEL SECURITYveFORCE ROW LEVEL SECURITYiçermelidir." Daha sonra Composer'dan geçişi oluşturmasını isteyin. - PRE — Review Composer-generated policies. Composer bazen ilkeleri
auth.uid()'yi işaretlemeden yazar.usingmaddesi olmayanallow select on public.itemsgibi politikalar tehlikeli derecede geniştir. user_id eşleşmesini zorunlu kılın. - DEPLOY — Confirm
FORCE ROW LEVEL SECURITYis live. Supabase Studio'yu açın, her tablonun RLS geçişini kontrol edin. Composer'ın geçişindeENABLEvarsa ancakFORCE'yi unutmuşsa, tablo sahipleri (geçişleriniz) RLS'yi atlar. Bu gerçek bir boşluktur. - POST — Run the baas.supabase-rls active check. Anon anahtarıyla yazmayı dener. Başarılı olursa, RLS aslında zorunlu değildir; muhtemelen
FORCEanahtar sözcüğü eksiktir.
Kimlik doğrulama ve oturumlar (4 öğe)
Cursor hızlı bir şekilde kimlik doğrulama akışları oluşturur ancak belirteçleri güvende tutan sunucu tarafı doğrulama işlemini sıklıkla gözden kaçırır.
- PRE — Ensure all auth routes use
getUser(). API rotalarınızdagetSession()'yi arayın veawait supabase.auth.getUser()ile değiştirin.getSession()doğrulanmamış bir çerezi okur;getUser(), Supabase arka ucuyla doğrulanır. - PRE — Check Composer auth handlers for token expiry. Magic-link belirteçlerinin sunucu tarafından zorlanan
expires_at'ye ihtiyacı vardır. Varsayılan Supabase 1 saattir — gerçek bir sebep olmadan Cursor'den bunu geçersiz kılmasını istemeyin. - PRE — Audit the sign-in redirect guard. Oturum açtıktan sonra
nextsorgu parametresi yönlendirmesi doğrulanmalıdır:/ile başlamalıdır, asla//ile başlamamalıdır. Besteci bazen bunu atlar. Eksikse manuel olarak ekleyin. - POST — Test logout server-side state destruction. Oturum açın, oturumu kapatın, çerezleri inceleyin (DevTools → Uygulama → Çerezler). Oturum çerezinin derhal temizlenmesi gerekir. Devam ederse, oturum kapatma işleyicisi durumu yok etmiyordur.
HTTP güvenlik başlıkları ve CSP (3 öğe)
Cursor varsayılan olarak nadiren ara yazılım oluşturur. Açıkça sormazsanız, CSP ve HSTS genellikle orada değildir.
- PRE — Demand CSP in
.cursorrules. Ekle: "Content-Security-Policy ile birsrc/middleware.tsoluşturun. Betik-src için nonce kullanın, güvenli olmayan satır içi kullanmayın." Daha sonra Cursor'den bunu oluşturmasını isteyin. Bu ipucu olmadan ara yazılım atlanır. - PRE — Verify
src/middleware.tsexists.src/dizin düzeniyle, Next.js yalnızcasrc/middleware.ts'yi alır. Kök düzeyindekimiddleware.tssessizce göz ardı edilir. CSP açılamıyorsa dosyanın doğru yerde olup olmadığını kontrol edin. - POST — Run headers.security-headers. Pasif tarama raporlarında CSP, HSTS, X-Frame-Options, X-Content-Type-Options eksik. Raporu açın ve dağıtım platformunuza yönelik düzeltme kılavuzunu izleyin.
Dağıtım hijyeni (5 öğe)
Cursor uygulamaları genellikle iyi varsayılanlara sahip olan ancak build/deploy sınırı için açık bir sağlamlaştırma gerektiren Vercel'ye ulaşır.
- DEPLOY — Check Vercel env-var scoping. Ayarlar → Ortam Değişkenleri → her gizli dizi yalnızca Prodüksiyon kapsamına alınmalıdır. Asla
sk_live_*'yi Önizleme veya Geliştirme ile paylaşmayın. - DEPLOY — Disable build-log secret echo.
vercel.jsonveya GitHub Eylemler iş akışınızdaecho $SECRETvarsa onu kaldırın. Derleme günlükleri herkese açık olarak arşivlenir; günlüklerdeki sırların güvenliği ihlal edilir. - DEPLOY — Use Vercel's managed secrets, not inline workflow vars. Vercel'nin Ayarları → Ortam Değişkenleri kullanımda değilken şifrelenir. GitHub Eylemlerin sırları hiç yoktan iyidir ancak dağıtım platformu entegrasyonu için değil, CI için tasarlanmıştır.
- POST — Verify CSP nonce on the deployed preview. Tarayıcıda bir Vercel Önizleme bağlantısı açın, DevTools → Ağ → kök HTML yanıtını açın. CSP başlığı bulunmalı ve istek başına benzersiz bir nonce ile
'strict-dynamic'içermelidir. - POST — Rotate any key that ever shipped, even to Preview. Bir anahtar üretim paketine 10 dakika bile ulaşmışsa, güvenliği ihlal edilmiştir. Hemen döndürün.
Cursor'ye özel kazanımlar (4 öğe)
Cursor'nin güvenlik riskleri oluşturan iş akışına özgü kalıplar:
- Agent mode auto-fixes propagate old patterns. Agent'tan "kimlik doğrulama hatalarını düzeltmesini" isterseniz, aynı kimlik doğrulama dosyasını birden çok kez yeniden oluşturabilir ve her seferinde, kod tabanı bağlamındaysa aynı hizmet anahtarını satır içine alabilir. Önce orijinali temizleyin, ardından Temsilciden düzeltmesini isteyin.
- Cursor Index leaks intent. Cursor'nin
@codebaseindekslemesi güçlüdür ancak.cursordizininiz açığa çıkarsa (yanlış yapılandırılmış S3, git geçmişi), indeks mimarinizi ve gizli kalıplarınızı açığa çıkarır..cursoryerel tutun. - Composer mode loses context between files. Composer'ın oluşturduğu her dosya yenidir. Bir istemci dosyası ve ardından bir API rotası oluşturmasını isterseniz, farklı Supabase istemci yapılandırmaları kullanabilirler. Her ikisini de inceleyin ve mimarinize uyduklarından emin olun.
- Autocomplete bias toward "working" over "secure". Cursor mevcut bağlamınızı geçen en hızlı kodu önerir. Testinizde
NEXT_PUBLIC_SERVICE_KEYvarsa, otomatik tamamlama bunu hatırlar ve yeniden önerir. Kodu modelle paylaşmadan önce test fikstürlerini temizleyin.
Sonraki adımlar
Cursor'ye özgü kalıpları kilitledikten sonra, general vibe coding security checklist (44 öğe) ve ardından step-by-step hardening ile çapraz kontrol yapın. Ayrıca araçları karıştırıyorsanız Claude Code checklist'ye bakın.
