Güvenli kodlama, yazılım geliştirme sürecinde güvenlik açıklarını en baştan önlemek için yapılan uygulamalardır.
Amaç, sistem yayınlandıktan sonra ortaya çıkan zafiyetleri düzeltmek yerine, kodu en baştan güvenli şekilde yazmaktır.
Aşağıdaki prensipler; web, mobil ve masaüstü uygulamaları geliştiren herkes için geçerlidir.
- 1. Girdi Doğrulama (Input Validation)
- 2. SQL Injection’dan Korunma
- 3. Güvenli Kimlik Doğrulama
- 4. Yetkilendirme Kontrolü (Access Control)
- 5. Güvenli Veri Saklama
- 6. XSS (Cross-Site Scripting) Önlemleri
- 7. Hata Yönetimi (Error Handling)
- 8. Güvenli Loglama ve İzleme
- 9. Üçüncü Taraf Kütüphaneleri Güvenli Kullanma
- 10. Güvenli Kod İncelemesi (Code Review)
1. Girdi Doğrulama (Input Validation)
Her gelen veri potansiyel olarak zararlıdır kabul edilmelidir.
Yapılması gerekenler:
-
Sunucu tarafında doğrulama
-
Beyaz liste yaklaşımı (whitelist)
-
Regex kontrolleri
-
Uzunluk sınırları
-
Tür kontrolü (int/string/date)
Yanlış girdi doğrulama → SQLi, XSS, command injection gibi dev açıklar doğurur.
2. SQL Injection’dan Korunma
SQL injection, en sık görülen kritik açık türüdür.
Önleme yöntemleri:
-
Hazırlanmış ifadeler (Prepared Statements)
-
ORM kullanımı
-
Kullanıcı girdisini SQL’e direkt eklememe
-
Sınırlı yetkili DB kullanıcı hesabı
3. Güvenli Kimlik Doğrulama
Kimlik doğrulama uygulamanın en kritik noktalarından biridir.
Kurallar:
-
Parolalar hash + salt ile saklanmalı (Bcrypt, Argon2)
-
MFA/2FA desteği
-
Lockout mekanizması (çok fazla yanlış deneme)
-
Session timeout ayarı
-
JWT süreleri kısa olmalı
4. Yetkilendirme Kontrolü (Access Control)
Kullanıcılar yalnızca kendi haklarına sahip olmalıdır.
Dikkat edilmesi gerekenler:
-
IDOR’dan kaçınma (Object ID doğrulaması)
-
Her istekte rol kontrolü
-
Sunucu tarafında yetki kontrolü (client tarafına güvenilmez)
-
Admin fonksiyonlarını ayırma
5. Güvenli Veri Saklama
Veriler korunmalı, şifrelenmeli ve minimum düzeyde tutulmalıdır.
Öneriler:
-
Hassas verileri şifreleme (AES-256)
-
Gereksiz veri saklamama (data minimization)
-
Config dosyalarına API anahtarı koymama
-
Ortam değişkenleri (ENV) kullanma
6. XSS (Cross-Site Scripting) Önlemleri
Önleme yolları:
-
Output encoding (HTML escape)
-
Content Security Policy (CSP)
-
Güvenli template motorları
-
Input sanitize
7. Hata Yönetimi (Error Handling)
Hata mesajları saldırgana ipucu vermemeli.
-
Kullanıcıya sade hata mesajı göster
-
Detaylı logları yalnızca sunucuda tut
-
Stack trace kullanıcıya gösterilmemeli
8. Güvenli Loglama ve İzleme
Loglar saldırılara ışık tutar.
Kurallar:
-
Parola, token, kredi kartı bilgisi loglama!
-
Logları imzalama veya şifreleme
-
SIEM entegrasyonu (Splunk, ELK)
-
Anormal davranışları tespit etme
9. Üçüncü Taraf Kütüphaneleri Güvenli Kullanma
-
Kullanılmayan paketleri kaldır
-
Bağımlılıkları sürekli güncelle
-
Kaynağı belli olmayan paketleri kullanma
-
Sürüm kontrolü (npm audit, pip audit)
10. Güvenli Kod İncelemesi (Code Review)
Kod yayına çıkmadan önce gözden geçirilmelidir.
-
Peer review
-
Static Application Security Testing (SAST)
-
Dynamic Application Security Testing (DAST)
Sonradan düzeltmek maliyetlidir, baştan güvenli yazmak her zaman daha ucuzdur.
Bir Cevap Yaz
E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.