lostyazilim
tr.link

Sql İnjection Açığı

6 Mesajlar 838 Okunma
acebozum
tr.link

tirtir tirtir WM Aracı Kullanıcı
  • Üyelik 15.02.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad Ç** T**
  • Mesajlar 28
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
Arkadaşlar İnjection Açığını Kapatmak Engellemek İçin Örnek Veriyorum

$id = (int) intval($_GET["id"]); Sadece sayısal karakterlere izin ver mi iyidir yoksa

$id = $_GET["id"];

$idduzenle = @mysql_real_escape($id); bu hazır fonksiyonmu iyidir ?

sizce ?
 

 

wmaraci
reklam

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Yerinizde olsam direk PDO yapısını kullanırdım :)
 

 

.

tirtir tirtir WM Aracı Kullanıcı
  • Üyelik 15.02.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad Ç** T**
  • Mesajlar 28
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
Araştırdım Haklısın Galiba ama o kadar kod yazdım şimdi tekrar yapıyı değiştirmek hiç işime gelmiyor :D

Neredeyse tüm amatör PHP ve MySQL projelerinde SQL injection açığı bulunuyor. Fakat PDO’nun binding özelliği sayesinde sorgu içerisindeki değişken değerler harici olarak dahil ediliyor ve kaçış karakterleri ekleniyor. Bu sayede bu basit açıktan da arınmış oluyoruz.
 

 

ozolcay ozolcay Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 27.04.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar Programcısı
  • Konum Eskişehir
  • Ad Soyad O** Ö**
  • Mesajlar 49
  • Beğeniler 4 / 7
  • Ticaret 14, (%64)
Aşağıdaki kodu kullanarak sql injection u engellemiş olursunuz. Böylece id değerinizin sadece rakamlardan oluştuğunu belirlersiniz.

$id=(mysql_real_escape_string(abs(intval($_GET['id']))));
 

 

wmaraci
wmaraci

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)

// id value, -1'den büyük ve sadece tam sayı
// kendin fonksiyon yazıp kullanırsan, daha sonra "tüm sistemdeki"
// her kodu tek tek değiştirmek zorunda kalmazsın, direk fonksiyonu değiştirince olay çözülür

function idval($id) {
return max(intval($id), 0);
}

 

 

Murat Alabacak <http://muratalabacak.net>

tirtir tirtir WM Aracı Kullanıcı
  • Üyelik 15.02.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad Ç** T**
  • Mesajlar 28
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
Teşekkürler Arkadaşlar Ben genelde bu yapıyı kullanıyorum bu zamana kadar hiçbir sıkıntı yaşamadım $id = (int) intval($_GET["id"]); sadece yeterlimi diye düşündüm sanırım yeterli :)
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al