Php'de Sql injection'dan nasıl korunurum?

cemphp (651) 11 yıl önce sordu

Php'de aşağıdaki gibi bir kod yazdığımda, kullanıcı verisini doğrudan Sql sorgusunun içine yerleştirdiğimde, Sql Injection'a maruz kalacağım.

$guvensiz_veri = $_POST['kullanici_verisi];

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

kullanıcıdan veri aldığım yere kullanıcı aşağıdaki gibi bir kod yazarsa

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

Sql sorgusu şu şekilde değişecek

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

Bu gibi bir durumda Php'de sql Injection'dan korunmak için ne yapmalıyım?

Toplam 2 cevap


cemphp (651) 11 yıl önce cevapladı

Php'de Sql Injection dan korunmak için

Hazırlanmış ifadeler ve parametreli sorgular kullanın.

Temel olarak iki seçeneğiniz var

  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.
    }

aykutaslan (11) 11 yıl önce cevapladı
$guvensiz_veri = addslashes($_POST['kullanici_verisi]);

mysql_ söz dizimlerini kullanarak yazıyorsan direk addslashes fonksiyonunuda kullanabilirsin.

'" gibi özel karakterlerin başına / koyar mysql kayıt ederkende eklediği / ları siler temiz bir kayıt olur.