Konuyu Açan #1
Giriş kaynağı olarak hangi katmanlarda güvenlik sağlıyoruz, nasıl pratikte uygulanır?


Hook
Bir web uygulamasında kullanıcıdan alınan verinin güvenliğini düşünmeden işlemek, çoğu zaman deneyimsiz bir güvenlik uçurumuna yol açabilir. Özellikle SQL Injection, girdinin nereden geldiği ve nasıl işlendiğiyle doğrudan ilişkilidir. Bu yüzden mevcut projende hangi girdilerin hangi katmanlarda nasıl temizlendiğini ve denetlendiğini netleştirmek önemli.

Birincil girdİ kaynakları ve riskleri
  • İstemci tarafı formlar: En yaygın kaynak. Girdi doğrulaması çoğunlukla istemci tarafında yaptığında güvenlik tamamlanmaz. Örnek olarak arama kutuları, kullanıcı girişi, filtreleme alanları gibi alanlar düşünülür.

Öneri: sunucu tarafında zorunlu doğrulama ve parametrik sorgular kullanımı; istenmeyen karakterleri temizlemek yerine güvenli kısıtlar koymak.

  • URL sorgu parametreleri: Sorgular, yönlendirme ve filtreleme için kullanılır; kötü amaçlı girdiler kısa yoldan veritabanına ulaşabilir.

Öneri: erişim kontrolü ve kimlik doğrulama ile birlikte hazırlanan ifadeler (prepared statements) kullanımı.

  • API ve JSON gövdesi: REST/GraphQL gibi arayüzler veri akışını merkezi olarak yönetir; derinlemesine doğrulama gerekir.

Öneri: JSON şemasına uygunluk, tür kontrolü ve bounds checking.

  • Üçüncü taraf entegrasyonları: Ödeme motorları, e-posta servisleri gibi dış sistemlerden gelen veri sızıntısı riski taşır.

Öneri: güvenli ortak arayüzler, imzalı istekler ve sınırlı yetkiler.

Girdi temizleme stratejileri
  • Parametrik sorgular ve hazırlanan ifadeler: En kritik savunma. Sorgu parçalarını doğrudan birleştirmekten kaçınılır.

  • Giriş doğrulama: Tip, uzunluk, regex ile format kontrolü; özel karakterleri sınırlı tutma.

  • En az ayrıcalık prensibi: Veritabanı kullanıcılarını sadece gerekli yetkilerle çalıştırma.

  • Dış dünya ile sınır: En kritik işlemleri mikro servisler veya güvenli katmanlarda sınırlandırma.


Pratikte uygulanabilir bir örnek
  • Bir kullanıcı kaydı formunda ad, e-posta ve yaşı alınıyor olsun. Sunucu tarafında:
  • Tüm alanlar için tip ve uzunluk kontrolleri yapılır.
  • E-posta için standart bir regex ile format doğrulanır.
  • Veritabanı sorguları, kullanıcı adı veya e-posta ile doğrudan string birleştirme içermeden hazırlanan ifadelerle çalıştırılır.
  • Hatalar loglanır ve kullanıcıya ayrıntı verilmeyen bir hata mesajı ile yanıt döner.


Kapsamlı yaklaşım için çağrı
Girdi kaynaklarını projenizde hangi katmanlarda nasıl güvence altına alıyorsunuz? Özellikle mevcut projelerde karşılaştığınız zorluklar nelerdi ve hangi teknikleri uyguladınız? Deneyimleriniz ile hangi güvenlik uygulama desenlerini daha güvenli buluyorsunuz? Yorumlarda paylaşırsanız sevinirim.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi