Reklam Alanı
Yazılım Geliştirme
Yazılım Geliştirme

Güvenli Kod İnceleme (Secure Code Review) Nasıl Yapılır

2 Ağustos 2026 · 3 dk okuma · 22 okunma

Güvenli kod inceleme (secure code review), bir yazılımın işlevsel doğruluğunun ötesine geçip, kodun kötü niyetli girdiler veya beklenmedik koşullar altında nasıl davrandığını değerlendiren sistematik bir denetim sürecidir. Standart bir kod incelemesi "bu iş mantığı doğru mu" sorusuna odaklanırken, güvenli kod incelemesi "bu kod kötüye kullanılabilir mi" sorusunu merkeze alır.

Manuel İnceleme ile Otomatik Analiz (SAST) Farkı

SAST (Static Application Security Testing) araçları (örneğin PHPStan güvenlik eklentileri, Semgrep, SonarQube) kaynak kodu çalıştırmadan tarar ve bilinen zafiyet kalıplarını (pattern) tespit eder. Hızlı ve tekrarlanabilirdir ancak iş mantığına özgü zafiyetleri (örneğin yetkilendirme mantığındaki bir açık) genellikle kaçırır. Bu yüzden SAST, insan gözünden geçen manuel incelemenin yerini almaz, onu tamamlar.

# Semgrep ile PHP projesinde hızlı bir tarama örneği
semgrep --config p/php-security-audit ./src

İnceleme Kontrol Listesi

Girdi Doğrulama ve Çıktı Kaçışlama

Her dış girdi (form, URL parametresi, HTTP başlığı, dosya) güvenilmez kabul edilmelidir. Girdi doğrulama beyaz liste (allow-list) mantığıyla yapılmalı, çıktı ise kullanıldığı bağlama göre kaçışlanmalıdır (HTML çıktısı için htmlspecialchars(), SQL için prepared statement).

// Güvensiz: doğrudan kullanıcı girdisini HTML'e basma
echo "Merhaba " . $_GET['name'];

// Güvenli
echo "Merhaba " . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');

Kimlik Doğrulama ve Oturum Yönetimi

Parolaların password_hash() ile (bcrypt/argon2id) saklandığından, oturum kimliklerinin girişten sonra yeniden üretildiğinden (session fixation önlemi) ve oturum çerezlerinde HttpOnly, Secure, SameSite bayraklarının set edildiğinden emin olunmalıdır.

Yetkilendirme Kontrolleri

Her hassas işlemde, sadece "kullanıcı giriş yapmış mı" değil, "bu kullanıcı bu kaynağa erişebilir mi" sorusu da kod seviyesinde kontrol edilmelidir. Örneğin bir sipariş detay endpoint'inde sipariş sahibinin oturum açan kullanıcıyla eşleştiğinin doğrulanması gerekir; aksi halde IDOR zafiyeti oluşur.

Kriptografi Kullanımı

MD5/SHA1 gibi algoritmaların parola saklamada kullanılmadığından, rastgele değerlerin (token, nonce, salt) random_bytes() gibi kriptografik olarak güvenli üreteçlerle oluşturulduğundan emin olunmalıdır; rand() veya mt_rand() bu amaçla yetersizdir.

Hata Yönetimi ve Sır Yönetimi

Üretim ortamında ayrıntılı hata mesajları veya stack trace kullanıcıya gösterilmemeli, API anahtarları ve veritabanı kimlik bilgileri kod içine gömülmek yerine ortam değişkenleri veya bir secret manager üzerinden yönetilmelidir.

Süreç Olarak Nasıl Uygulanır

  1. Pull request açılışında otomatik SAST taraması CI hattına entegre edilir.
  2. Yüksek/kritik bulgular birleştirme (merge) öncesinde bloklayıcı hale getirilir.
  3. Kimlik doğrulama, ödeme, dosya yükleme gibi yüksek riskli modüller için ayrıca manuel inceleme zorunlu tutulur.
  4. Bulgular OWASP Top 10 kategorileriyle etiketlenerek eğilim analizi yapılır.

Sonuç

Güvenli kod inceleme, tek seferlik bir denetim değil, geliştirme sürecine gömülü sürekli bir disiplindir. SAST araçlarının hızını insan analistinin bağlamsal muhakemesiyle birleştirmek, hem OWASP Top 10 kapsamındaki riskleri hem de projeye özgü iş mantığı açıklarını yakalamanın en etkili yoludur.

İlgili Yazılar