SQL Güvenliği İçin Kod İnceleme Kuralları

0 Ответов 9 Просмотров
Оценившие
Участники
Автор темы #1
Giriş
Bir yazılım projesinde güvenlik, yazılım yaşam döngüsünün erken aşamalarında ele alınmalı. Özellikle SQL güvenliği açısından kod incelemesi, potansiyel açıkları tespit etmek ve güvenli tasarım kararlarını doğrulamak için kritik bir araçtır. Aşağıdaki kurallar, ekiplerin ortak bir güvenlik diliyle hareket etmesini sağlar ve hataların erken yakalanmasına yardımcı olur.

1) Girdi doğrulama ve parametrize kullanımını zorunlu kılın
  • Her kullanıcı girdisi veya dış kaynaktan gelen veri için parametreli sorgular veya hazırlanan ifadeler (prepared statements) kullanılması şartını kontrol edin.
  • Dinamik SQL kullanımı yalnızca güvenli bağlamlarda ve iyi bir temizleme/kaçış stratejisiyle (whitelisting) istisna olarak ele alınabilir; çoğu durumda tamamen kaçınılması tavsiye edilir.
  • ORM katmanının veya veritabanı sürücüsünün güvenlik özelliklerini (bind parameters, query builders) etkin kullanın.


2) Yetkilendirme ve least privilege ilkesi
  • Uygulama katmanında veritabanı hesaplarına minimum yetki verin; gerektiğinde her modül için ayrı hesaplar kullanın.
  • Veritabanı kullanıcıları için SELECT/INSERT/UPDATE/DELETE gibi işlemler destekleyici seviyede ayrılmalı; depolanan prosedürler veya görünümlerle sınırlı alanlara erişim sağlanabilir.
  • Kod incelemesi sırasında hangi sorguların hangi hesaba ve hangi tabloya eriştiğini açıkça izleyin.


3) Depolanan prosedürler ve güvenlik duvarları
  • Mümkün olduğunca depolanan prosedürler veya güvenli API arayüzleri üzerinden işlemler yapın; doğrudan tablo adlarına yazılan sorguları azaltın.
  • Giriş noktalarında yetki denetimini katman halinde uygulayın, uygulama ve veritabanı katmanları arasında güvenli bir sınır çizin.
  • Prosedürlerde giriş/çıkış parametrelerini net biçimde doğrulayın; yerel olarak çalıştırılamayacak dinamik SQL kullanımını sınırlayın.


4) Girdi güvenliği ve çıktı güvenliği
  • En az iki katmanlı doğrulama: istemci tarafı kontrolü ve sunucu tarafı doğrulaması.
  • Veritabanı tarafında da uzun, anlamsız veya tekrarlı hataların önlenmesi için hata mesajlarını sınırlayın; ayrıntılı hata mesajları üretmeyin.
  • Hassas verileri saklarken şifreleme, tokenizasyon veya maskeleme gibi teknikleri düşünün; gereksiz sütunları sorunsuzca filtreleyin.


5) Kod inceleme süreçleri ve checklist
  • İnceleme sırasında her sorgunun parametrik olup olmadığını, en az bir güvenlik alışkanlığına uyup uymadığını kontrol edin.
  • Otomatik statik analiz araçlarını ve güvenlik testlerini (SAST/DAST) entegre edin; insan incelemesini güçlendirmek için bulguları sınıflandırın.
  • Sonuçları belgeleyin: hangi kural karşılanmadıysa hangi düzeltme yapıldı, kim onay verdi.


6) Loglama ve izleme
  • SQL hatalarını, başarısız bağlantıları ve erişim denemelerini güvenli bir şekilde loglayın; kimlik bilgisi sızdırmaktan kaçının.
  • Loglar, gerektiğinde güvenlik olayları üzerinde hızlı müdahale için merkezi bir yerde toplanmalı ve korunmalıdır.


Kapanış ve tartışma
Bu kurallar, ekiplerin güvenlik odaklı bir dil üzerinden çalışmasını sağlar. Siz hangi alanlarda ek kurallar veya özel kontroller eklediniz? Özellikle hangi diller veya veritabanı sistemleri için ek bir kontrol seti işe yarıyor? Deneyimlerinizi ve uyguladığınız pratikleri paylaşır mısınız?

Чтобы ответить, необходимо войти в систему.

0 цитат выбрано