Neye Göre query() ? | Neye Göre prepare() ? | alicangonullu.biz

Neye Göre query() ? | Neye Göre prepare() ?

Merhabalar

Bugün sık karşılaşılan bir hatayı size anlatacağım. Şimdiden keyifli okumalar.

Öncelikle id çekmek için prepare veya query kullandığımızı düşünelim iki durumu da iki senaryo da açıklayacağım.


Query ile çektiysek :


$idk = $_GET["idk"];
$db->query("SELECT * from gelis_table WHERE id = $idk ")->fetchAll(PDO::FETCH_ASSOC);

Bu şekilde başarıyla çekeceğiz. Ancak şöyle bir güvenlik sorunumuz olacak : SQL Injection

Şöyle olduğu zaman :

idk.php?idk=3;DELETE FROM gelis_table;

gelis_table'i SQL Enjeksiyon yöntemi ile silecektir. Yani query() ile çekmemiz güvenli olmayacaktır.


Prepare ile çektiysek :


    $stmt = $db->prepare('SELECT * FROM gelis_table WHERE id= :gonderid');
    $stmt->execute(array(':gonderid' => $_GET['idk']));
    $row = $stmt->fetch(); 

Şimdi aynı komutu deneyeceğiz :

idk.php?idk=3;DELETE FROM gelis_table;

Aynı komut bu sefer çalışmadı. Çünkü artık istek komutumuz değişti.

Bu kadar arkadaşlar. Umarım faydalı olmuştur.


Belge / Video Eki


Ali Can Gönüllü | Blog