Claude Code güvenlik kontrol listesiyle kimlik doğrulama, girdi doğrulama, gizli bilgilerin yönetimi ve enjeksiyon yüzeylerinde hızlı, somut spot-taramalar yapın.

Hafif bir güvenlik spot-taraması, sevk edilmeden önce bariz, yüksek etkili problemleri yakalamaya yönelik hızlı bir incelemedir (genellikle 30–60 dakika). Tam bir denetim değildir. Bunu bir güvenlik yürüyüşü gibi düşünün: gerçek uygulamalarda en sık sorun çıkaran yolları tararsınız ve tahmin değil kanıt ararsınız.
Bu Claude Code güvenlik kontrol listesi, günlük web uygulamalarında en sık bozulan alanlara odaklanır:
Bu liste, hataların olmadığını kanıtlamaya, karmaşık tehdit aktörlerini modellemeye veya penetrasyon testinin yerini almaya çalışmaz.
"Somut bulgular" demek, kaydettiğiniz her sorunun geliştiricinin hemen harekete geçebileceği kanıt içermesi demektir. Her bulgu için şunları yakalayın:
AI yardımcıdır, otorite değil. Arama, özetleme ve test önermede kullanın. Sonra kodu okuyarak ve mümkünse gerçek bir istekle yeniden üreterek doğrulayın. Model belirli konumları ve adımları gösteremiyorsa, iddiayı kanıtlanmamış sayın.
Hızlı bir inceleme, hedefi daraltmazsanız çalışmaz. Claude Code'a bir şey göstermeden önce bugün neyi kanıtlamaya çalıştığınızı ve nelerin kontrol edilmediğini kararlaştırın.
İlk olarak hata yapmanın maliyeti yüksek olan 1–3 gerçek kullanıcı yolculuğu seçin. İyi adaylar: giriş, şifre sıfırlama, ödeme ve yönetici düzenleme ekranları.
Sonra korumanız gereken varlıkları adlandırın. Spesifik olun: kullanıcı hesapları, ödeme işlemleri, kişisel veriler, sadece yöneticilere ait işlemler gibi.
Ardından tehdit varsayımlarınızı sade cümlelerle yazın. Karşınızda gezinen meraklı bir kullanıcı mı, script kullanan harici bir saldırgan mı, yoksa belli erişime sahip bir içeriden biri mi? Cevabınız "yeterince iyi"nin ne olduğunu değiştirir.
Son olarak, spot-taramanın bulgularla bitmesini sağlayacak şekilde geçme/kalma koşullarını tanımlayın. Basit kurallar işe yarar:
Başarısızlığın nasıl göründüğünü tarif edemiyorsanız, kapsam hâlâ çok belirsiz demektir.
Bir spot-taraması model doğru yerleri inceliyorsa işe yarar. İncelemenin tahmin değil kanıt üretebilmesi için küçük bir kod ve not demeti toplayın.
Önce güvenlik-kritik yolu paylaşın: istek giriş noktaları ve kullanıcının kim olduğunu ve ne yapabileceğini belirleyen kod. Veri akışını gösterecek kadar çevresel kodu da ekleyin.
Pratik bir demet genellikle şunları içerir:
Ayrıca birkaç satır ortam notu ekleyin: oturum mu yoksa JWT mi, token'ların nerede yaşadığı (cookie veya header), reverse proxy veya API gateway davranışı, kuyruk/cron çalışanları ve "sadece dahili" endpoint'ler. Varsayımları açık hale getirir.
Hataları takip etmeden önce bir envanter isteyin: giriş noktaları, ayrıcalıklı endpoint'ler ve dokunulan veri depoları. Bu, gözden kaçan yüzeyleri önler.
Ayrıca somut bulgulara zorlayan bir çıktı formatında anlaşın. Basit bir tablo iyi iş görür: Bulgu, Şiddet, Etkilenen endpoint/dosya, Kanıt (tam snippet veya satır aralığı), İstismar senaryosu, Düzeltme önerisi.
Zaman kutusu koyun:
Amaç mükemmel kapsama değil. Test edilebilir birkaç bulgu üretmek.
Uygulamayı açık tutarak okuyun. UI üzerinde tıklayın ve hangi isteklerin tetiklendiğini izleyin. Notlar belirli endpoint'lere, parametrelere ve veri kaynaklarına işaret etmelidir.
Bir oturuma sığan iş akışı:
Faydalı bir alışkanlık: her "tamam gibi" için onu kırmak adına ne yapacağınızı yazın. Kırma denemesini tarif edemiyorsanız, muhtemelen doğrulamadınız.
Kimlik doğrulama, uygulamanın "bu istek bu kişiye ait" dediği yerdir. Hızlı bir spot-taraması her satırı okumaktan çok, kimliğin nerede kurulduğunu bulup kestirme ve başarısızlık yollarını kontrol etmektir.
Güven sınırını bulun: kimlik ilk nerede oluşturuluyor veya kabul ediliyor? Bu bir session cookie, bir JWT bearer token, bir API anahtarı veya kenarda mTLS olabilir. Claude Code'dan "anonim"i kullanıcı id'sine çeviren tam dosya ve fonksiyonu işaret etmesini ve aynı işi yapabilecek diğer yolları listelemesini isteyin.
Kontrol edilmesi gereken authn noktaları:
Pratik bir örnek: sıfırlama e-postaları "hesap bulunamadı" diyorsa hızlı bir kullanıcı sayma sorunu vardır. Genel bir mesaj olsa bile zamanlama farkları aynı gerçeği sızdırabilir; cevap zamanlamasını da kontrol edin.
Yetkilendirme, yanlış olduğunda en büyük zarara yol açan sorudur: "Bu kullanıcı bu belirli kaynafta bu işlemi yapmaya izinli mi?" Hızlı bir spot-taramada bu varsayıma kasıtlı olarak meydan okuyun.
Rolleri ve izinleri sade dilde yazın. İnsan okunur olsun:
Sonra her hassas işlemin sunucu tarafında, sadece UI'da değil, yetki kontrolü yaptığını doğrulayın. Düğmeler gizlenebilir ama saldırgan doğrudan API'yi çağırabilir.
Sıkça sorun çıkaran hızlı tarama:
Klasik IDOR kokusu basittir: GET /projects/{id} gibi kullanıcı kontrollü {id} ile sunucunun onu mevcut kullanıcıya ait olup olmadığını doğrulamadan yüklemesi.
Gerçek bir cevap zorlayan bir prompt örneği:
"Bu endpoint için erişimi kararlaştıran tam kodu gösterin ve farklı bir orgId'den bir kullanıcının nasıl erişebileceğini sağlayacak spesifik koşulları listeleyin. Yoksa neden yok olduğunu dosya ve fonksiyon adlarıyla açıklayın."
Hızlı web uygulaması sorunlarının çoğu bir boşluktan başlar: uygulama geliştiricinin beklemediği girdiyi kabul eder. "Girdi"yi, zararsız gibi görünse bile kullanıcı veya başka bir sistemin etkileyebileceği her şey olarak değerlendirin.
İncelediğiniz endpoint için girdileri adlandırarak başlayın:
Validasyon, verinin uygulamaya girdiği yere yakın olmalı, iş mantığının derinliklerinde değil. Temelleri kontrol edin: tip (string vs number), maksimum uzunluk, zorunlu vs opsiyonel ve format (email, UUID, tarih).
Rol, durum alanı veya sıralama gibi bilinen değerler için allowlist tercih edin. Kötü değerleri birkaç örnekle engellemektense izin listesi koymak zor aşılır.
Ayrıca hata işleme kısmını kontrol edin. Uygulama girdiyi reddederken ham değeri yanıt, log veya UI'da geri yansıtmasın. Küçük doğrulama hataları veri sızıntısına veya enjeksiyon yardımcılarına dönüşebilir.
Riskli endpoint'ler (giriş, arama, yükleme, admin işlemleri) için kısa bir "kötü girdi" mini planı:
Örnek: herhangi bir string kabul eden bir sıralama parametresi daha sonra SQL parçasına dönüşebilir. "date" veya "price" gibi bir allowlist bu sınıf hataları erken engeller.
Çoğu hızlı inceleme aynı birkaç yerde sorun bulur: kullanıcı girdisinin kod, sorgu, yol veya URL olarak yorumlandığı her yer. Burada "girdi güven sınırını aşıyor mu" anlarını ararsınız.
Veriyi giriş noktalarından (sorgu parametreleri, header'lar, cookie'ler, yüklemeler, admin formları) nereye gittiğine kadar izleyin.
Bu desenleri arayın ve her biri için somut çağrı noktası ve yük örneği isteyin:
ORDER BY, ve kullanıcı değerlerini birleştiren IN (...) yapılarıAyrıca serileştirme ve şablon enjeksiyonuna dikkat edin. Kullanıcı tarafından sağlanan JSON, YAML veya şablonlanmış string'leri ayrıştıran her şey risk taşır, özellikle özel tipleri, ifadeleri veya sunucu tarafı render'ı destekliyorsa.
Bir özellik URL, dosya adı veya biçimlendirilmiş metin kabul ediyorsa, kanıtlayana kadar kötüye kullanılabileceğini varsayın.
Gizli bilgilerle ilgili problemler genellikle nereden bakılacağını bildikten sonra yüksek sesle ortaya çıkar. Gizlilerin nerede yaşadığını ve nerelere yanlışlıkla kopyalandığını bulun.
Gizlilerin sıkça göründüğü yerler:
Sonra somut bir cevap isteyin: bugün bir gizli sızıyorsa, sonra ne olur? İyi bir sistem anahtar değişimi (rotation), iptal (revocation) ve hızlı yeniden dağıtım yolu sağlar. Cevap "daha sonra değiştiririz" ise bunu bir bulgu olarak ele alın.
En az ayrıcalık (least privilege) başka bir hızlı kazanımdır. Anahtarlar aşırı güçlü olduğunda olaylar daha kötü olur. Veritabanı kullanıcılarının tabloları düşürme yetkisi, üçüncü taraf token'ların hesapları yönetme yetkisi veya anahtarların ortamlar arasında paylaşılması gibi durumlara bakın. Hizmet başına, ortam başına en küçük izin kümesiyle tek bir anahtar tercih edin.
Hızlı spot-taramada Claude Code'a yapıştırabileceğiniz promptlar:
Son olarak guardrail'ları doğrulayın: kaynak kontrolden gizlileri engelleyen (pre-commit/CI kontrolleri), yedekler veya snapshot'ların açık metin kimlik bilgisi içermediği. Platform snapshot ve rollback destekliyorsa, gizlilerin çalışma zamanında enjekte edildiğini, kaydedilmiş imajlara gömülmediğini doğrulayın.
Belirsiz promptlar belirsiz cevaplar üretir. Modeli kanıt göstermeye zorlayın: tam konumlar, izleyebileceğiniz bir iz, çalıştırabileceğiniz bir yeniden üretme ve iddianın yanlış olduğunu gösteren ne olur.
Bir seferde tek desen kullanın, sonra siz onaylayıp/geri çevirdikten sonra revize etmesini isteyin.
Çıktı hâlâ belirsizse, somutlaştırın:
"Sadece şu şekilde cevap ver: dosya yolu, fonksiyon adı, riskli satır ve bir cümlelik etki."
Profil güncelleme endpoint'leri genellikle erişim kontrolü hatalarını gizler. Aşağıda bu kontrol listesini izleyebileceğiniz küçük bir vaka var.
Senaryo: bir API endpoint kullanıcı profilini güncelliyor:
PATCH /api/profile?accountId=123 JSON gövdesi { "displayName": "Sam" } gibi.
Claude Code'dan handler'ı bulmasını, accountIdin nasıl kullanıldığını takip etmesini ve sunucunun sahipliği zorunlu kılıp kılmadığını kanıtlamasını istersiniz.
Sık görülen durumlar:
accountIde güveniyor ve bunun oturumdaki kullanıcıyla eşleşip eşleşmediğini kontrol etmeden hesabı güncelliyor.displayName kırpılıyor, ama accountId tamsayı olarak doğrulanmıyor."... WHERE account_id=" + accountId gibi string birleştirmeyle oluşturuluyor.İyi bir yazım somut olmalı:
accountIdsi ile bir istek gönderildiğinde değişiklik oluyor; SQL güvensiz girdiyle oluşturuluyoraccountIdi yok say, sunucuda doğrulanmış kullanıcının account id'sini kullan; sorguyu parametreleştiraccountId reddedilmeliDüzeltme sonrası hızlı tekrar kontrol:
accountId ile başarısız olmalı.Hızlıca bir zafiyeti kaçırmanın en hızlı yolu UI'nın uyguladığı kısıtlamalara güvenmektir. Bir düğme gizlenmiş veya devre dışı bırakılmış olabilir; bu bir izin kontrolü değildir. Sunucu isteği yine kabul ediyorsa, herhangi biri farklı bir kullanıcı kimliği, farklı bir rol veya doğrudan API çağrısıyla bunu tekrar oynatabilir.
Bir diğer yaygın kaçırma nedeni ise belirsiz istek. "Bir güvenlik incelemesi yap" genellikle genel bir rapor üretir. Spot-taraması sıkı bir kapsam (hangi endpoint'ler, hangi roller, hangi veri) ve katı bir çıktı formatı (dosya adı, fonksiyon, riskli satır, minimal repro) gerektirir.
Aynı kural AI çıktısına da uygulanır: iddia somut kod konumu ve tetikleme adımlarını içermiyorsa, kanıtlanmamış sayın.
Bu tuzaklar tekrar tekrar ortaya çıkar:
Eğer her yeni kenar için daha fazla filtre ekliyorsanız, durun. Düzeltme genellikle daha erkendir: sınırda girdileri doğrulayın ve yetkilendirme kontrollerini açık ve merkezi yapın ki her yol onları kullansın.
Bunlar tam bir incemenin yerine geçmez, ama herkes yorgunken kaçan hataları yakalar. Kanıtlanabilir olana odaklanın: gönderebileceğiniz bir istek, yükleyebileceğiniz bir sayfa, bulabileceğiniz bir log satırı.
Genelde işe yarayan beş hızlı kontrol:
Bu hafta sevk edilebilecek en iyi 3 düzeltmeyi yazın, hayal listesi değil. Örnek: (1) giriş ve şifre sıfırlama için hız sınırlaması ekle, (2) "id ile getir" endpoint'inde sunucu tarafı sahiplik kontrollerini zorunlu kıl, (3) arama alanı için giriş uzunluğunu sınırla ve beklenmeyen karakterleri reddet.
Bir spot-taraması, sonuçlar gönderdiğiniz şeyi değiştirmiyorsa işe yaramaz. Bu kontrol listesini küçük, tekrarlanabilir bir yapım adımı olarak değil, tek seferlik kurtarma görevinden ziyade ele alın.
Her bulguyu anlaşılır bir backlog öğesine dönüştürün:
Risk ve takım büyüklüğüne göre bir ritim seçin. Birçok ekip için her sürüm en iyisidir. Eğer sürümler sık ise, aylık 30–60 dakikalık bir inceleme ve sevk öncesi daha kısa bir kontrol yapın.
Tekrar etmeyi kolaylaştırmak için yeniden kullanılabilir bir prompt paketi ve kontrol listesi şablonu oluşturun. Promptları somut çıktılara odaklı tutun: route'u göster, korumayı göster, başarısız isteği göster ve beklentiyi yaz. Paketi ekibin zaten çalıştığı yerde saklayın ki atlanmasın.
Eğer sohbet üzerinden uygulama inşa ediyorsanız, planlamaya kontrol listesini ekleyin. Authn/authz, girdiler ve gizliler için kısa bir "güvenlik varsayımları" notu ekleyin ve ilk çalışan sürümden hemen sonra spot-taramayı çalıştırın.
Koder.ai (koder.ai) gibi platformlar bu alışkanlığa iyi uyabilir çünkü hızlı yineleme ve inceleme noktaları sağlar. Snapshot ve rollback kullanmak, bir güvenlik düzeltmesi davranışı bozduğunda düzeltmeyi göndermeyi kolaylaştırır.