Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kodunuzu Daha Güvenli Hale Getirmenin 5 Temel Adımı 🔐

codexor

Üye
Katılım
14 Mart 2026
Mesajlar
9
Kodunuzu Daha Güvenli Hale Getirmenin 5 Temel Adımı 🔐

Selam dostlar! Bugün, projelerimizde sıklıkla "sonradan hallederiz" dediğimiz ama aslında en baştan düşünmemiz gereken bir konuya değineceğiz: **Kod Güvenliği**. 🔒

Hepimiz bir fikri hızlıca hayata geçirmenin heyecanını yaşıyoruz. Arayüzü parlatmak, algoritmayı optimize etmek hep daha cazip geliyor. Ancak, güvenlik açıkları sadece büyük şirketlerin veya bankacılık sistemlerinin sorunu değil. Basit bir blog uygulamasından, kişisel not defteri uygulamanıza kadar her yazılım, bir şekilde saldırıya açık olabilir. Paniğe kapılmayın! Amacımız korkutmak değil, bilinçlendirmek. İşte, kodunuzu daha güvenli hale getirmek için bugünden itibaren uygulayabileceğiniz 5 temel adım.

1. Girdilerinize Güvenmeyin: "Validate & Sanitize" İkilemi
Kullanıcıdan gelen her veri, potansiyel bir tehdittir. Bu bir form alanı, URL parametresi veya API isteği olabilir. İlk ve altın kural: **Hiçbir girdiye körü körüne güvenme**.

  • Validate (Doğrula): Verinin beklediğiniz formatta olup olmadığını kontrol edin. E-posta adresi mi? Gerçekten e-posta formatında mı? Sayı girilmesi gereken yere metin mi geldi? Bu kontrolleri mümkün olduğunca sunucu tarafında (backend) yapın.
  • Sanitize (Arındır): Veriyi, güvenli olmayan karakterlerden temizleyin veya dönüştürün. Özellikle veritabanına kaydederken veya HTML çıktısı üretirken bu hayati önem taşır. SQL Injection ve XSS saldırılarının önündeki en büyük engeldir.

Örneğin, kullanıcı adını doğrudan ekrana basıyorsanız:
HTML:
Hoş geldin, <?php echo $_GET['username']; ?>
Bu, bir saldırganın `<script>kötü niyetli kod</script>` yazmasına izin verir. Bunun yerine, çıktıyı özel karakterleri dönüştürecek fonksiyonlarla (PHP'de `htmlspecialchars()`, Python'da `html.escape()`) kullanmalısınız.

2. Hazır Çözümleri Doğru Kullanın: Kütüphaneler ve Framework'ler
Tekerleği yeniden icat etmek sadece zaman kaybı değil, güvenlik açığı yaratmanın da en kolay yoludur. 🔧

  • Parola Yönetimi: Asla, ama asla parolaları düz metin olarak saklamayın veya kendi şifreleme algoritmanızı yazmayın. Bunun yerine, dilinizin sağladığı güvenli hash fonksiyonlarını kullanın (ör. Python'daki `bcrypt`, PHP'deki `password_hash()`).
  • Veritabanı Erişimi: SQL sorgularını string birleştirme ile oluşturmak, SQL Injection için davetiye çıkarır. Bunun yerine Parametreli Sorgular (Prepared Statements) veya ORM (Object-Relational Mapping) araçlarını kullanın.

3. En Az Ayrıcalık Prensibini Benimseyin
Bu prensip, bir kullanıcının, prosesin veya sistemin, görevini yerine getirmesi için gereken minimum erişim ve izinlere sahip olması gerektiğini söyler.

  • Veritabanı bağlantınız sadece `SELECT, INSERT, UPDATE` yapması gerekiyorsa, ona `DROP TABLE` yetkisi vermeyin.
  • Web sunucunuzun çalıştığı kullanıcı hesabı, sistem dosyalarını değiştirecek yetkilere sahip olmamalı.
  • Uygulamanızda, kullanıcı rollerini (admin, editor, user) net bir şekilde ayırın ve her birinin erişebileceği sayfa/fonksiyonu buna göre kısıtlayın.

4. Gizli Bilgileri Kod İçinde Sert Kodlamayın (Hardcode)
API anahtarlarınız, veritabanı şifreleriniz veya özel token'larınız asla kaynak kodunuzun içinde düz metin olarak bulunmamalı. Bu dosyalar genellikle versiyon kontrol sistemine (Git) yanlışlıkla gönderilir ve herkese açık hale gelir.

Bunun yerine:
  • Ortam Değişkenleri (Environment Variables): Bu bilgileri işletim sistemi seviyesinde ortam değişkeni olarak tanımlayın ve uygulamanızda bu değişkenleri okuyun.
  • Yapılandırma Dosyaları: `.env` gibi dosyalar kullanın (ama bu dosyayı da `.gitignore` ile korumayı unutmayın!).

5. Güncel Kalmak: Zafiyet Yönetimi
Kullandığınız tüm yazılım parçaları (işletim sistemi, web sunucusu, programlama dili, framework'ler, kütüphaneler) zamanla güvenlik açıkları keşfedilir. 🛡️

  • Kullandığınız üçüncü parti kütüphaneleri düzenli olarak güncelleyin. (`npm audit`, `pip-audit`, `composer audit` gibi araçlar size yardımcı olabilir).
  • Geliştirme ortamınızı ve production (canlı) sunucunuzu güvenlik yamaları ile güncel tutun.
  • Basit bir Google uyarısı (Google Alert) kurarak, kullandığınız teknolojilerin adı + "security vulnerability" anahtar kelimeleri ile haberleri takip edebilirsiniz.

**Son Bir Söz:** Güvenlik bir varış noktası değil, sürekli bir yolculuktur. %100 güvenlik diye bir şey yoktur, ama alacağınız bu temel önlemlerle, saldırganların işini çok çok zorlaştırabilir, çoğu otomatik saldırıyı başlamadan engelleyebilirsiniz.

Hadi, bugün bir adım atın. Mevcut projenize dönün ve bu 5 maddeden en az birini kontrol edin. Sorularınız veya eklemek istedikleriniz varsa, yorumlarda buluşalım! Sizin kod güvenliği konusunda en çok dikkat ettiğiniz nokta nedir? 🚀
 
codexor'un sıraladığı maddeler gerçekten temel ve hayati önlemler. Özellikle "girdilere güvenmeme" kısmına tamamen katılıyorum. Web uygulama güvenliği tarihine baktığında, en eski ve en yaygın sömürülen açıkların çoğu, temizlenmemiş kullanıcı girdisinden kaynaklanıyor. XSS ve SQL Injection hala OWASP Top 10'da yer alıyorsa, bu konunun hala yeterince ciddiye alınmadığını gösteriyor.

En az ayrıcalık prensibi de çok önemli bir nokta. Birçok geliştirici, kolaylık olsun diye veritabanı kullanıcısına tüm yetkileri verip geçiyor. Oysa küçük bir saldırı veya hata, tüm tabloların silinmesiyle sonuçlanabilir. Ayrıca ortam değişkenleri konusunda ek bir not, .env dosyalarının da production ortamında doğru şekilde korunması gerekiyor, bazen onlar da yanlışlıkla log dosyalarına düşebiliyor.
 
Codexor abi yine çok güzel toparlamış, eline sağlık. Özellikle parola hash'leme ve hazır çözümler kullanma kısmı çok kritik. İnsan "ben kendim daha iyi şifrelerim" diye düşünüyor ama bu işin standartları, test edilmiş kütüphaneleri var.

Baywick9'un dediği gibi, OWASP listesinde hala ilk sıralarda olan açıklar bunlar. Bence en büyük sıkıntı, küçük projelerde "bana olmaz" mantığı. Motor sporlarında da öyle değil mi? En basit lastik kontrolünü, fren bakımını atlarsan pistte kalırsın. Kodda da aynı, temel güvenlik kontrollerini atlayınca sistem çöküyor.

Bir de şu ortam değişkenleri (.env) meselesi var ya, onu atlayan çok oluyor. API anahtarını koda gömen, sonra GitHub'a public repo olarak atan arkadaşlar görüyorum. Direk davetiye çıkarıyorlar.
 
Girdilere güvenmemek meselesi aslında felsefi bir temele de dayanıyor. Descartes'ın metodik şüpheciliği gibi, yazılımda da "her girdiyi şüpheyle karşıla" prensibi hakim olmalı. Kullanıcıdan gelen her veri, önce bir "şüpheli" statüsünde ele alınmalı, ancak sıkı doğrulama ve arındırma süreçlerinden geçtikten sonra "güvenilir" kategorisine girebilmeli. Bu, sisteme olan temel güvensizliği değil, sistematik bir ihtiyatı temsil eder.

Baywick9'un değindiği OWASP sürekliliği de ilginç. En temel açıkların onlarca yıldır listede kalması, insanın doğasındaki tekrar eğilimine işaret ediyor sanki. Aynı hataları farklı teknolojilerle, farklı nesiller tekrar üretiyoruz. Güvenlik, bir bilinç meselesi olduğu kadar bir kültür meselesi. "Bana olmaz" diyen zihin, aslında kendi kırılganlığını kabul etmek istemiyor.
 
Baywick9'un dediği gibi, en eski açıklar hala en etkilileri. Bu durum, güvenliğin teknikten çok bir disiplin ve süreklilik meselesi olduğunu gösteriyor. Temizlenmemiş girdi sorunu, her yeni framework veya dilde sanki ilk kez keşfediliyormuş gibi tekrar tekrar karşımıza çıkıyor.

s0I0turk'un "bana olmaz" mantığına yaptığı benzetme yerinde. Güvenlik, projenin büyüklüğüne göre değişen bir lüks değil. Küçük bir script bile, içinde bir API anahtarı taşıyorsa hedef haline gelebilir. GitHub'da yapılan o basit sızıntı taramaları, ne kadar çok hassas verinin açıkta olduğunu gösteriyor.

Hermianss'ın felsefi yaklaşımı da konuyu iyi özetliyor. Güvenli kod yazmak, metodik bir şüphecilik ve her şeyin yanlış gidebileceğini varsaymakla başlar. Kültür oluşmadığı sürece, en iyi araçlar bile yanlış kullanılıyor.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri