Skip to main content
Yazılım Güvenliği

Güvenli Kodlama Pratikleri: Yazılımcıların Bilmesi Gereken Kritik Kontroller

February 20, 2026 4 min read 21 views Raw
Bilgisayar Uygulamasını Görüntüleyen Monitör
Table of Contents

Günümüz yazılım ekosisteminde güvenlik, yalnızca güvenlik ekiplerinin sorumluluğu değildir; her geliştiricinin günlük iş akışının ayrılmaz bir parçası olmalıdır. Bu yazıda, yazılımcıların bilmesi gereken kritik güvenli kodlama kontrollerini, nedenlerini ve pratik uygulama önerilerini detaylı şekilde ele alıyoruz. Hem web uygulamaları hem de mikroservis mimarileri için geçerli olan prensipler, örnek kontrol listeleri ve entegrasyon önerileri sunulacaktır.

Neden Güvenli Kodlama Önemlidir?

Güvenlik açıkları maliyetli veri ihlallerine, itibar kaybına ve yasal yaptırımlara yol açabilir. Erken aşamada uygulanan güvenli kodlama pratikleri, hataların üretimde keşfedilmesini azaltır ve düzeltme maliyetlerini düşürür. Ayrıca, güvenlik kültürünü proje yaşam döngüsüne entegre etmek, ürün kalitesini ve sürekliliğini artırır.

Temel Güvenli Kodlama İlkeleri

Geliştiricilerin bilmesi gereken temel ilkeler şunlardır:

  • En az ayrıcalık (principle of least privilege)
  • Varsayılan olarak güvenli yapılandırma (secure by default)
  • Güvenli varsayımlar yapmama: kullanıcı girdisi her zaman potansiyel tehlike olarak değerlendirilir
  • Kanıtlanmış kütüphaneleri ve standartları kullanma (don’t roll your own crypto)
  • Sürekli analiz ve otomasyon: SAST, DAST, SCA vb. araçları CI/CD’ye entegre etme

Kritik Kontroller ve Uygulamaları

1. Girdi Doğrulama ve Çıktı Kodlama

Kullanıcıdan veya harici sistemlerden gelen tüm girdiler doğrulanmalı, normalize edilmeli ve gerekiyorsa beyaz liste yaklaşımıyla filtrelenmelidir. SQL injection, XSS ve komut enjeksiyonu gibi saldırılardan korunmak için parametreli sorgular (prepared statements), ORM güvenliği ve çıktının context-aware encoding’i kullanılmalıdır.

2. Kimlik Doğrulama ve Yetkilendirme

Güçlü kimlik doğrulama mekanizmaları (çok faktörlü kimlik doğrulama, OAuth2/OpenID Connect) ve ayrıntılı yetki kontrolleri uygulanmalıdır. Yetkilendirme denetimleri her zaman sunucu tarafında yapılmalı, istemci tarafı kontrolleri tek başına güvenlik sağlamamalıdır.

3. Oturum Yönetimi

Oturum belirteçleri güvenli (HttpOnly, Secure, SameSite cookie ayarları) şekilde kullanılmalı, tokenlerin ömrü sınırlı olmalı ve yenileme (refresh) mantığı dikkatle planlanmalıdır. Oturum sabitleme, oturum çalma ve CSRF saldırılarına karşı önlemler alınmalıdır.

4. Parola ve Gizli Bilgi Yönetimi

Parolalar güçlü tek yönlü hashing algoritmaları (bcrypt, Argon2, scrypt) ile saklanmalı, salt kullanılmalıdır. API anahtarları, sertifikalar ve diğer sırlar asla kaynak koduna gömülmemeli; secrets manager veya güvenli çevresel gizli yönetim çözümleri kullanılmalıdır.

5. Kriptografi ve TLS

Veri aktarımı için modern TLS konfigürasyonları (TLS 1.2+, güçlü şifreler) kullanın. Kendi kriptografik algoritmalarınızı yazmayın; platformun veya kütüphanelerin iyi belgelenmiş API’lerini tercih edin. Şifreleme anahtarları yaşam döngüsü (rotasyon, saklama, erişim kontrolü) yönetilmelidir.

6. Hata Yönetimi ve Logging

Hatalar kullanıcıya hassas bilgi sızdırmayacak şekilde gösterilmeli; ayrıntılı stack trace veya iç IP/DB bilgi mesajları loglarda bile açıkta bırakılmamalıdır. Loglar güvenli bir şekilde saklanmalı ve izinsiz erişime karşı korunmalıdır. Aynı zamanda saldırı tespitine yardımcı olacak yeterli telemetri toplanmalıdır.

7. Bağımlılık Yönetimi ve Yazılım Tedarik Zinciri

Üçüncü taraf kütüphaneler düzenli olarak taranmalı (SCA araçları) ve bilinen güvenlik açıklarına karşı izlenmelidir. SBOM (Software Bill of Materials) oluşturmak, tedarik zincirini şeffaflaştırır. Paketlerin kaynağı doğrulanmalı ve imzalı paketler tercih edilmelidir.

8. Statik ve Dinamik Analiz, Kod İncelemeleri

SAST araçları kod yazılırken veya PR aşamasında otomatik çalıştırılmalı; DAST araçları ise uygulamanın çalışan haline uygulanarak runtime zafiyetleri tespit etmelidir. Otomatik analizin yanında zorunlu kod incelemeleri (peer review) güvenlik açıklarının erken yakalanmasını sağlar.

9. Dosya Yükleme, Serileştirme ve Deserileştirme

Dosya yüklemesi yapılan uygulamalarda MIME tipi kontrolü, dosya boyutu limiti, zararlı içerik taraması ve yüklenen dosyaların doğrudan yürütülmesini engelleyecek dizin yapılandırmaları uygulanmalıdır. Güvenilmeyen nesne serileştirmesi tehlikelidir; mümkünse JSON/XML parsing yerine güvenli formatlar ve kısıtlı izinler tercih edilmelidir.

10. Trafik Kontrolü, Rate Limiting ve Bot Koruması

Brute force, credential stuffing ve DDoS gibi saldırılara karşı rate limiting, lockout politikaları, CAPTCHA ve davranış analizi kullanılmalıdır. Kritik API uç noktalarında hız sınırlama ve zorlama tespit mekanizmaları uygulayın.

Geliştirme Yaşam Döngüsüne Entegrasyon

Güvenliği SDLC’ye entegre etmek için şu adımları öneriyoruz:

  • Tehdit modelleme ile riskleri erkenden tanımlayın.
  • Güvenlik gereksinimlerini ürün gereksinimlerine dahil edin.
  • CI/CD boru hattında SAST/SCA/DAST/secret scanning otomasyonu kurun.
  • Geliştiricilere düzenli güvenlik eğitimleri ve simülasyonlar sağlayın.
  • Üretim sonrası izleme ve hızlı müdahale süreçleri oluşturun.

Kaynaklar ve Kontrol Listeleri

Uygulamada kullanılabilecek rehberler ve araçlar:

  • OWASP Top 10 ve OWASP ASVS
  • CWE (Common Weakness Enumeration)
  • SAST araçları: SonarQube, Semgrep, Fortify
  • SCA araçları: Dependabot, Snyk, WhiteSource
  • DAST araçları: OWASP ZAP, Burp Suite

Sonuç

Güvenli kodlama pratikleri, sürekli dikkat ve organizasyonel destek gerektirir. Yukarıda özetlenen kontroller, geliştiricilerin günlük kodlama alışkanlıklarına entegre edildiğinde yazılımınızın saldırılara karşı dayanıklılığını önemli ölçüde artırır. Güvenlik yalnızca araçlarla değil, doğru süreçler, eğitim ve kültürle sağlanır. Sen Ekolsoft olarak, ekiplerinize bu dönüşümü hızlandıracak danışmanlık ve araç entegrasyonu konularında destek verebiliriz.

Share this post