Ali Can Gönüllü tarafından 2019-08-15 20:56:33 tarihinde yazıldı. Tahmini okunma süresi 55 saniye.
Çalışmalarım için bağış yapmak isterseniz Patreon hesabımdan bağışta bulunabilirsiniz.
Blog adresinde yazılanlar sadece eğitim amacıyla deneysel olarak hazırlanmıştır. Konu içerisinde geçen yöntemleri kendi oluşturduğunuz test ortamında denemenizi tavsiye ederiz.
Herhangi bir tarih, yer ve/veya mekanda oluşacak zararlardan alicangonullu.org, alicangonullu.org yöneticisi ve/veya konu yazarı mesul değildir.
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.