Güvenli Kodlama Kontrol Kartları

Güvenli Kodlama Kontrol Kartları

Güvenli kodlama eğitimi bölümlerinin en kritik yap / yapma kurallarını tek kart boyutunda özetleyen yazdırılabilir şablonlar.

Kart 1: Güvenli Kodlama Temelleri

Bunu Yap
  • Güvenliği tasarım aşamasında planla, sonraya bırakma
  • Her kod inceleme isteğinde (PR) güvenlik odaklı inceleme yap
  • Geliştiricilere düzenli güvenli kodlama eğitimi ver
  • SBOM oluştur ve güncel tut
  • Saltzer-Schroeder prensiplerini uygula (en az yetki, derinlemesine savunma)
Bunu Yapma
  • Güvenliği sadece test aşamasına bırak
  • Geliştiriciye eğitim vermeden "güvenli yaz" de
  • Karmaşık mimariyi "daha güvenli" san
  • Güvenlik belirsizliğine (obscurity) güven

Kart 2: Enjeksiyon Saldırıları ve Savunma

Bunu Yap
  • SQL sorgularında parametreli sorgu (parameterized query) kullan
  • Komut çalıştırmada subprocess.run(shell=False) kullan
  • Template engine otomatik escaping açık olsun
  • Her formda CSRF token ve SameSite cookie kullan
  • Girdi doğrulamayı beyaz liste (whitelist) ile yap
Bunu Yapma
  • SQL sorgusunda string birleştirme veya f-string kullan
  • os.system() veya shell=True kullan
  • innerHTML ile kullanıcı verisini yaz
  • eval() veya exec() ile kullanıcı verisi çalıştır

Kart 3: Kimlik Doğrulama ve Oturum Yönetimi

Bunu Yap
  • Parolaları bcrypt (rounds=12+) veya Argon2 ile hash'le
  • Oturum ID'leri secrets.token_urlsafe ile üret
  • Cookie'lerde HttpOnly + Secure + SameSite bayrakları açık
  • JWT'de algorithms parametresi zorunlu, alg:none kabul edilmesin
  • MFA için TOTP kullan, rate limiting açık olsun
Bunu Yapma
  • MD5 veya SHA-256 ile parola hash'le
  • Girişte yeni oturum ID üretmeyi unut (session fixation)
  • JWT payload'a hassas veri (parola, kart) koy
  • SMS tabanlı MFA kullan (SIM swap açığı)

Kart 4: Erişim Kontrolü ve API Güvenliği

Bunu Yap
  • Her endpoint için yetki kontrolü (authorization) yap
  • IDOR koruması: kullanıcı sadece kendi kaynaklarına erişsin
  • Dosya yollarında Path.resolve() + taban dizin kontrolü yap
  • CORS'ta sadece güvenilir origin listesine izin ver
  • Hassas endpoint'larda sıkı rate limiting uygula
Bunu Yapma
  • Kimlik doğrulama yaptım diye yetki kontrolünü atla
  • Access-Control-Allow-Origin: * + credentials: true kullan
  • Kullanıcı girdisini doğrudan dosya yolunda kullan
  • Artan sayısal ID kullan (UUID tercih et)

Kart 5: Kriptografi ve Secret Yönetimi

Bunu Yap
  • AES-256-GCM veya Fernet ile veri şifrele
  • Secret'ları environment variable veya Vault'ta sakla
  • .env dosyasını .gitignore'a ekle
  • Anahtar rotasyon politikası tanımla (örn. 90 günde bir)
  • Kriptografik rastgelelik için secrets modülü kullan
Bunu Yapma
  • MD5, SHA-1, DES, RC4 veya ECB mod kullan
  • Koda secret (API key, parola) göm
  • Python random modülünü kriptografi için kullan
  • Şifreleme anahtarını veritabanında sakla

Kart 6: Güvenlik Testi ve DevSecOps

Bunu Yap
  • SAST (Bandit) her PR'da otomatik çalışsın
  • SCA (pip-audit) bağımlılıkları CVE ile kontrol etsin
  • Docker image'ları Trivy ile tara
  • Container'da non-root kullanıcı kullan
  • Her build'de SBOM üret ve sakla
Bunu Yapma
  • GitHub Actions'ı @main veya @master ile pinle (SHA kullan)
  • Dockerfile'da .env dosyasını image'a kopyala
  • Latest tag kullan (sürüm sabit değil)
  • Pipeline'ı sadece report modda bırak (enforced'a geç)

Baskı ve Kullanım

  • Her kart A4 boyutunda (210 x 297 mm) yazdırılabilir
  • Çift yüzlü renkli baskı önerilir (yeşil: yap, kırmızı: yapma)
  • Geliştirici ekip toplantılarında ve kod incelemelerinde dağıt
  • Laminate ederek dayanıklı hale getirebilirsin
  • Geliştirici masasında görünür yerde asılı tut

İlgili Bölümler