Kodunuzu Daha Güvenli Hale Getirmenin 5 Temel Adımı 
Selam dostlar! Bugün, projelerimizde sıklıkla gözden kaçırdığımız ama aslında her şeyden önce gelmesi gereken bir konuya değineceğiz: Kod Güvenliği. Hepimiz özellikleri yetiştirmeye, kodu çalışır hale getirmeye odaklanıyoruz. Ancak, güvenlik açıklarıyla dolu bir uygulama, temeli çürük bir bina gibidir. İşte size, başlangıç seviyesinden ileri seviyeye kadar her projede uygulayabileceğiniz 5 pratik adım.
1. Girdilerinize Asla Güvenmeyin: Doğrulama ve Temizleme
Kullanıcıdan, bir dosyadan veya bir API'den gelen her veri, potansiyel bir tehdittir. Bu yüzden ilk kuralımız: "Tüm girdiler şüphelidir!"
2. Hassas Bilgileri Asla Düz Metin Olarak Saklamayın
Kullanıcı şifreleri, API anahtarları, bağlantı dizeleri... Bunlar asla kod içine sabitlenmemeli veya düz metin olarak kaydedilmemeli.
3. Minimum Ayrıcalık Prensibini Benimseyin
Bu prensip, bir kullanıcının, prosesin veya sistemin, görevini yerine getirmesi için gereken minimum yetkiye sahip olması gerektiğini söyler.

4. Bağımlılıklarınızı Güncel Tutun
Modern yazılım geliştirme, üçüncü parti kütüphaneler (bağımlılıklar) üzerine kurulu. Ancak bu kütüphanelerde keşfedilen güvenlik açıkları (CVE - Common Vulnerabilities and Exposures), sizin uygulamanızı da savunmasız hale getirebilir.
5. Hata Mesajlarını Akıllıca Yönetin
Hata mesajları kullanıcı için yol gösterici olmalı, ancak saldırgan için bilgi sızdırmamalı.
Uygulamanızın güvenliğini sağlamak, sonradan eklenen bir özellik değil, geliştirme sürecinin her aşamasına dahil edilmesi gereken bir düşünce tarzıdır. Bu adımlar, sağlam bir başlangıç yapmanızı sağlayacak.
**Peki ya siz?** Projelerinizde güvenliği nasıl ele alıyorsunuz? En sık karşılaştığınız güvenlik endişeleri neler? Yorumlarda deneyimlerinizi paylaşın, birlikte öğrenelim!
Selam dostlar! Bugün, projelerimizde sıklıkla gözden kaçırdığımız ama aslında her şeyden önce gelmesi gereken bir konuya değineceğiz: Kod Güvenliği. Hepimiz özellikleri yetiştirmeye, kodu çalışır hale getirmeye odaklanıyoruz. Ancak, güvenlik açıklarıyla dolu bir uygulama, temeli çürük bir bina gibidir. İşte size, başlangıç seviyesinden ileri seviyeye kadar her projede uygulayabileceğiniz 5 pratik adım.
1. Girdilerinize Asla Güvenmeyin: Doğrulama ve Temizleme
Kullanıcıdan, bir dosyadan veya bir API'den gelen her veri, potansiyel bir tehdittir. Bu yüzden ilk kuralımız: "Tüm girdiler şüphelidir!"
- Doğrulama (Validation): Gelen verinin formatının, uzunluğunun, tipinin beklentinize uygun olduğundan emin olun. E-posta adresi mi bekliyorsunuz? Gerçekten e-posta formatında mı?
- Temizleme (Sanitization): Veriyi kullanmadan önce, zararlı olabilecek kısımlarından arındırın. Özellikle veritabanı sorgularında (SQL Injection) veya HTML çıktısında (XSS - Cross-Site Scripting) kullanılacak veriler için bu hayati önem taşır.
2. Hassas Bilgileri Asla Düz Metin Olarak Saklamayın
Kullanıcı şifreleri, API anahtarları, bağlantı dizeleri... Bunlar asla kod içine sabitlenmemeli veya düz metin olarak kaydedilmemeli.
- Şifreler için Hashleme: Şifreleri veritabanında asla düz metin olarak saklamayın. Bunun yerine bcrypt, Argon2 gibi güçlü hash algoritmaları kullanın. Hash, geri döndürülemez bir şifrelemedir.
- Gizli Anahtarlar için Ortam Değişkenleri: API anahtarı gibi bilgileri kodunuzdan ayırın ve `.env` dosyaları veya işletim sistemi ortam değişkenleri gibi güvenli yerlerde tutun.
3. Minimum Ayrıcalık Prensibini Benimseyin
Bu prensip, bir kullanıcının, prosesin veya sistemin, görevini yerine getirmesi için gereken minimum yetkiye sahip olması gerektiğini söyler.
- Veritabanı kullanıcınız sadece `SELECT` ve `INSERT` yapması gerekiyorsa, ona `DELETE` veya `DROP` yetkisi vermeyin.
- Uygulamanızın çalıştığı kullanıcı hesabı, sistemde süper yönetici haklarına sahip olmamalı.
4. Bağımlılıklarınızı Güncel Tutun
Modern yazılım geliştirme, üçüncü parti kütüphaneler (bağımlılıklar) üzerine kurulu. Ancak bu kütüphanelerde keşfedilen güvenlik açıkları (CVE - Common Vulnerabilities and Exposures), sizin uygulamanızı da savunmasız hale getirebilir.
- Düzenli olarak `npm audit` (JavaScript), `pip-audit` (Python), `dotnet list package --vulnerable` (C#) gibi komutlarla projenizi tarayın.
- Mümkün olduğunca bağımlılık sayınızı az tutun ve güncellemeleri düzenli uygulayın.
5. Hata Mesajlarını Akıllıca Yönetin
Hata mesajları kullanıcı için yol gösterici olmalı, ancak saldırgan için bilgi sızdırmamalı.
- Ayrıntılı Hataları Kullanıcıya Göstermeyin: Kullanıcıya "Bir hata oluştu, lütfen daha sonra tekrar deneyin" gibi genel bir mesaj gösterin. Ancak, ayrıntılı hata loglarını (hatanın tam metni, stack trace, zaman damgası) sadece geliştiricilerin/güvenlik ekiplerinin erişebileceği güvenli bir yere (log dosyası, log yönetim sistemi) kaydedin.
- Bir veritabanı hatasında, veritabanı şema yapınızı, tablo isimlerinizi veya sorgularınızı içeren mesajlar asla tarayıcıda görünmemeli.
Uygulamanızın güvenliğini sağlamak, sonradan eklenen bir özellik değil, geliştirme sürecinin her aşamasına dahil edilmesi gereken bir düşünce tarzıdır. Bu adımlar, sağlam bir başlangıç yapmanızı sağlayacak.
**Peki ya siz?** Projelerinizde güvenliği nasıl ele alıyorsunuz? En sık karşılaştığınız güvenlik endişeleri neler? Yorumlarda deneyimlerinizi paylaşın, birlikte öğrenelim!