// docs / security guides / claude code checklist
Claude Code güvenlik kontrol listesi: 26 madde
Claude Code (Anthropic'in CLI aracısı), eğik çizgi komutları aracılığıyla kod tabanlarının tamamını oluşturur, çoklu dosya yeniden düzenlemeyi yönetir ve bash aracılığıyla/writes dosyalarını okur. Bu kontrol listesi Claude Code'nin belirli risklerini hedefler: varsayılan güvenlik politikalarının olmaması, nadiren eklenen hız sınırlaması, güvenlik koruma dosyanız olarak <code>.claude/CLAUDE.md</code> ve <code>.env</code> veya önbelleğe alınmış belirteçlerin işlenmesi riski. Sırlar, veritabanı, kimlik doğrulama, başlıklar, dağıtım ve Claude Code'ye özgü kazanımlar genelinde 26 öğ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)
Claude Code kaynak ağaçlarının tamamını okur ve tüm dosyaların çıktısını alır. Bağlamınızdaki sırlar çıktıda sırlara dönüşür.
- PRE — Create
.claude/CLAUDE.mdwith security policies. Ekle: "Security Rules: Hiçbir zaman satır içi service_role anahtarları istemci paketlerine dahil etmeyin. Hassas işlemleri her zaman yalnızca sunucu uç noktaları aracılığıyla yönlendirin. NEXT_PUBLIC_* env değişkenlerinin yalnızca güvenli değerler (anahtar yok, belirteç yok) içerdiğini doğrulayın." Claude Code proje rehberliği için.claude/CLAUDE.mdokur. - PRE — Ensure
.env.localis in.gitignore. Claude Code, yeniden düzenleme sırasında yanlışlıkla.env.localişlemini gerçekleştirebilir. Nelerin takip edildiğini kontrol etmek içingit ls-files .env*komutunu çalıştırın..env.localmevcutsa açığa çıkar. - PRE — Audit generated API routes for env-var verification. Claude Code bazen kullanmadan önce
process.env.SECRET'nin sunucu tarafında var olduğunu doğrulamayı unutur. Bir env var eksikse rotalar hızlı bir şekilde başarısız olmalı, varsayılana düşmemelidir. - PRE — Check the
.claudecache directory. Claude Code konuşma içeriğini.claude/cacheveya.claude/historyiçinde önbelleğe alır. Bu dosyalar taahhüt edilmemelidir..gitignore'ye.claude/ekleyin. - POST — Run secrets.browser-storage on the deployed app. Claude Code bir anahtarı satır içine aldıysa, pasif tarama onu oluşturulan pakette bulacaktır.
Veritabanı erişim kontrolü (4 öğe)
Claude Code şema oluşturmada mükemmeldir, ancak RLS politikalarının açık talimatlara ihtiyacı vardır.
- PRE — Instruct Claude Code on RLS in
.claude/CLAUDE.md. Ekle: "Her geçişALTER TABLE ... ENABLE ROW LEVEL SECURITYveFORCE ROW LEVEL SECURITYiçermelidir. Her politika kullanıcınınauth.uid()'sini doğrulamalıdır." - PRE — Review generated migrations for
FORCE ROW LEVEL SECURITY. Claude Code,ENABLEoluşturabilir ancakFORCE'yi unutun.FORCEolmadan, tablo sahipleri (geçiş çalıştırıcısı) RLS'yi atlar. Eksikse manuel olarak ekleyin. - DEPLOY — Test RLS enforcement after deploy. Supabase Studio'yu açın, bir masa seçin, RLS geçişinin ON olduğunu onaylayın. Claude Code'nin geçişi
ENABLE'yiFORCEolmadan kullandıysa, geçiş ON diyecektir ancak uygulama tamamlanmamıştır. - POST — Run the baas.supabase-rls active check. Anon anahtarıyla yazmaya çalışır. Başarılı olursa, RLS eksiktir. Geçişe
FORCEekleyin ve yeniden konuşlandırın.
Kimlik doğrulama ve oturumlar (4 öğe)
Claude Code, kimlik doğrulama akışlarını iyi bir şekilde oluşturur ancak otomatik olarak hız sınırlaması eklemez veya sunucu tarafındaki tüm belirteç taleplerini doğrulamaz.
- PRE — Mandate server-only auth verification in
.claude/CLAUDE.md. Ekle: "Verileri değiştiren her API rotası, sunucudaawait supabase.auth.getUser()ile kullanıcıyı doğrulamalıdır. İstek gövdesindekigetSession()veya ID kullanıcısına asla güvenmeyin." - PRE — Check generated auth handlers for token expiry. Sihirli bağlantı ve parola sıfırlama belirteçleri, sunucu tarafından zorlanan
expires_atgerektirir. Claude Code'ye sorun: "1 saatten eski belirteçleri reddeden bir çek ekleyin." - PRE — Verify sign-in redirect guards.
nextparametre yönlendirmesi//ile değil,/ile başlamalıdır..claude/CLAUDE.md'ye ekle: "nextparametresini doğrulayın:/ile başlamalıdır,//ile başlıyorsa veya bir protokol içeriyorsa reddedin." - POST — Test logout clears cookies. Oturum açın, oturumu kapatın, Uygulama → Çerezleri inceleyin. Oturum çerezinin temizlenmesi gerekir. Devam ederse, oturum kapatma uç noktası durumu yok etmiyordur.
HTTP başlıkları ve CSP (3 öğe)
Siz sormadığınız sürece Claude Code varsayılan olarak ara katman yazılımı oluşturmaz.
- PRE — Add middleware request to
.claude/CLAUDE.md. Şunu ekleyin: "İstek başına bir kez, HSTS, X-Frame-Options ve X-Content-Type-Options başlıklarını kullanarak Content-Security-Policy ilesrc/middleware.tsoluşturun." Daha sonra Claude Code'den bunu uygulamasını isteyin. - PRE — Verify
src/middleware.tsexists and has CSP. Next.jssrc/düzeniyle, ara yazılım proje kökünde değilsrc/middleware.tskonumunda olmalıdır. CSP başlığının'strict-dynamic've bir nonce içerdiğini doğrulayın. - POST — Run headers.security-headers on the deployed URL. Denetim, eksik başlıkları bildirir ve platformunuz için düzeltmeler önerir.
Dağıtım hijyeni (4 öğe)
Claude Code dağıtım platformunuzu yapılandırmaz; bu sizin sorumluluğunuzdadır ancak kontrol etmeye değer.
- DEPLOY — Scope env vars per environment in Vercel (or equivalent). Ayarlar → Ortam Değişkenleri → her sırrı yalnızca Production'a atayın. Asla
sk_live_*'yi Önizleme veya Geliştirme ile paylaşmayın. - DEPLOY — Audit your CI workflow for secret echo. Eğer GitHub Eylemler veya başka bir CI'nin herhangi bir yerinde
echo $SECRETvarsa, onu kaldırın. Derleme günlükleri arşivlenir; günlüklerdeki sırların güvenliği ihlal edilir. - DEPLOY — Prefer platform-native secret storage. Vercel'nin Ayarları → Ortam Değişkenleri şifrelenmiştir; GitHub Eylem sırları hiç yoktan iyidir ancak platformda yerel depolamayla eşleşmiyor.
- POST — Rotate any key that reached a public build. Bir anahtar Vercel Önizleme URL'de veya herhangi bir genel yapıda birkaç saniyeliğine bile görünürse, güvenliği ihlal edilmiştir. Hemen döndürün.
Claude Code'ye özel kazanımlar (5 öğe)
Claude Code mimarisine ve iş akışlarına özgü desenler:
- Claude Code forks work into subagents. Büyük görevlerde, Claude Code her biri kısmi kod tabanı bağlamına sahip birden fazla alt aracı örneği oluşturabilir. Bir alt ajan, diğerinin görmediği gizli-güvenli bir modeli halüsinasyona uğratırsa tutarsızlık ortaya çıkar. Son farkı dikkatlice inceleyin.
- Bash operations are unverified. Claude Code bash komutlarını doğrudan çalıştırır.
git commit -m "fix"kullanışlıdır, ancak çalışma dizininde bir.envdosyası varsa ve bir glob bunu içeriyorsa, işleme alınır. Claude Code onaylamadan önce daimagit diff --cached'yi inceleyin. - Context window boundaries create gaps. Kod tabanınız büyükse, Claude Code'nin içeriği birden fazla pencereye bölünebilir. Bir pencerenin
.env.localkullanımı diğerinden farklı olabilir..claude/CLAUDE.mdiçinde politikayı uygulayın ve çıktıyı doğrulayın. - Rate-limiting is almost never added without asking. Claude Code çalışan CRUD üretir ancak nadiren hız sınırlayıcı başlıklar veya üstel geri çekilme mantığı içerir. Bunu
.claude/CLAUDE.mdadresinden açıkça isteyin. .claude/CLAUDE.mdis read but not enforced. Claude Code,.claude/CLAUDE.md'nizi bir kısıtlama olarak değil, ipucu olarak okur. İpucu görevle çelişiyorsa, Claude Code bunu yok sayabilir. Her zaman çıktıyı gözden geçirin.
Sonraki adımlar
44 araç arası öğe için general vibe coding security checklist öğesini kontrol edin, ardından dağıtım zamanı modelleri için step-by-step hardening öğesine bakın. Ayrıca Cursor kullanıyorsanız Cursor security checklist'ye bakın.
