|

<p>Neye Göre query() ? | Neye Göre prepare() ?</p>



admin tarafından 2019-08-15 20:56:33 tarihinde yazıldı. Tahmini okunma süresi 55 saniye. 486 kere görüntülendi.




Disclaimer


The information provided in this blog post is intended for educational and informational purposes only. It is not intended to encourage or promote any illegal or unethical activities, including hacking, cyberattacks, or any form of unauthorized access to computer systems, networks, or data.

Yasal Uyarı
Bu blog yazısında sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır. Bilgisayar korsanlığı, siber saldırılar veya bilgisayar sistemlerine, ağlara veya verilere herhangi bir şekilde yetkisiz erişim de dahil olmak üzere herhangi bir yasa dışı veya etik olmayan faaliyeti teşvik etme veya reklamlama amacı taşımaz.
Yasal bilgiler için yasal sayfasını inceleyebilirsiniz .

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.