lostyazilim
tr.link

Sql Injection Açığını Kapatma

2 Mesajlar 947 Okunma
acebozum
tr.link

kozmo kozmo WM Aracı Kullanıcı
  • Üyelik 30.04.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Satınalma Uzmanı
  • Konum Manisa
  • Ad Soyad S** B**
  • Mesajlar 106
  • Beğeniler 24 / 14
  • Ticaret 0, (%0)
Aşağıdaki fonksiyonu bütün sayfalarımızda include ediyoruz,


function veriTemizle($mVar){
if(is_array($mVar)){
foreach($mVar as $gVal => $gVar){
if(!is_array($gVar)){
$mVar[$gVal] = htmlspecialchars(strip_tags(urldecode(mysql_escape_string(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($gVar))))))))); // -> Dizi olmadığını fark edip temizledik.
}else{
$mVar[$gVal] = veriTemizle($gVar);
}
}
}else{
$mVar = htmlspecialchars(strip_tags(urldecode(mysql_escape_string(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($mVar))))))))); // -> Dizi olmadığını fark edip temizledik.
}
return $mVar;


}



Fonsiyonu sayfalarınızda aşağıdaki gibi kullanıyoruz,



$id= veriTemizle($_GET('id')); // -> GET verilerini temizledik.
$id = veriTemizle($_POST('id')); // -> POST verilerini temizledik.



Bu şekilde açıklardan korunabilir mi forum sayfalarında buldum denemesini yapamadım yorum ve düşüncelerinizi paylaşabilir misiniz,
 

 

elektronikssl
webimgo

demontara demontara Mobil Ziyaretçi Trafik Sistemi Kullanıcı
  • Üyelik 18.12.2015
  • Yaş/Cinsiyet 50 / E
  • Meslek Yazılım & Sistem Mühendisi
  • Konum İzmir
  • Ad Soyad B** D**
  • Mesajlar 259
  • Beğeniler 54 / 53
  • Ticaret 2, (%100)
Regex kullanman daha faydalı olur.

Gelen her değişkeni olması gerektiği veri tipine göre kontrol edebilirsin.
1. örnek uzunluğu 12 karakter olacak şekilde ve sadece a-z 0-9 olan karakterkeri kabul eder geri kalanı içerikten siler.
2. örnekde sadece rakam ve uzunluğu 4 karakter olacak şekilde kabul eder.

1 - $degisken = trim(substr(preg_replace('/[^a-zA-Z0-9]/','',$degisken),0,12));
2 - $degisken = trim(substr(preg_replace('/[^0-9]/','',$degisken),0,4));


örnekler artırılabilir sonu yok.
Ayrıca sunucu tarafınada ek kontroller konulması gereklidir (modsecurity vb Güvenlik duvarı kuralları ile)
Senin kodlarında hata yada açık bile olsa sunucuyu geçemeyeceği için güvenlik sorunuda çok oluşmaz.
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al