Php SQL Injection Saldırılarından Nasıl Korunurum?

Php SQL Injection Saldırılarından Nasıl Korunurum?
0 145

Çoğu Php SQL kullanıcısının başı Injection Saldırıları ve ataklarıdır. Ancak bunlardan korunmanın yolları da mevcut. Bunları size en anlatabileceğimiz en kolay şekliyle aktarmaya çalıştık. Buyurun örneklerle bu savunma nasıl yapılır hep beraber anlamaya çalışalım.

Php SQL Injection Saldırılarından Nasıl Korunurum?
Php SQL Injection Saldırılarından Nasıl Korunurum?

Şöyle bir örnekle giriş yapmak istiyorum. Diyelim ki ben aşağıdaki gibi bir kod yazacağım ancak bu durumda kesinlikle kullanıcı verisini sql içine yerleştirdiğimde, Sql Injection saldırıları gelecektir.

$guvensiz_veri = $_POST

['kullanici_verisi];

mysql_soru("INSERT INTO tablo (kolon) VALUES ('" . $guvensiz_veri . "')");

Ancak kullanıcıdan veri aldığım yere kullanıcı aşağıdaki gibi bir kod girer ise

değer'); DROP TABLE tablo;--, 

Sql sorgusu şu şekilde değişir

INSERT INTO tablo (kolon) VALUES('değer'); DROP TABLE tablo;--')

Bu gibi bir durumda Php’de sql Injection’a maruz kalacağız. İşte bu gibi durumlarda ne yapabiliriz? Doğru hamle nedir? Açıklayalım…

 

Php’de Sql Injection dan korunmak için

Hazırlanmış özel ve hazır ifadeler ve parametreli sorgular kullanın.

Temel olarak iki seçeneğiniz var. 1.si PDO kullanarak 2.si ise mysqli kullanma yöntemleri.

  1. PDO kullanarak
    $stmt = $pdo->prepare('SELECT * FROM Kisiler WHERE Ad = :ad');
    
    $stmt->execute(array(':ad'=> $ad));foreach($stmt as $row){//  $row ile bir şeyler yap.}
  2. mysqli kullanarak
    $stmt = $dbConnection->prepare('SELECT * FROM Kisiler WHERE Ad = ?');
    $stmt->bind_param('s', $ad);
    
    $stmt->execute();
    
    $sonuc = $stmt->get_result();while($row = $sonuc->fetch_assoc()){//  $row ile bir şeyler yap.}

 

 

Bu iki yöntem dışında şöyle bir bilgi de verelim.

$guvensiz_veri = addslashes($_POST[‘kullanici_verisi]);

mysql_ söz dizimlerini kullanarak yazıyorsak direk “addslashes” fonksiyonunu da kullanman mümkün sıkıntı çıkmaz.

Ve son olarak ‘” tarzı özel karakterlerin başına slash yani “/” koyarsak mysql kayıt ederken de eklediği slash “/” ları siler ve böylelikle çok düzgün bir kayıt yapmış oluruz.продвижение видео в youtubetext seo

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.