Merhaba,
Bu yazımda PHP ile Pdo üzerinde güvenli veri yollanması için kullanabileceğiniz bindparam‘ın kullanımını göstereceğim.
PHP ile Pdo üzerinde bindparam kullanarak sql injection’un büyük ölçüde önüne geçebilirsiniz.
Örnek Kullanımı Aşağıdaki Gibidir :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$db = new PDO("mysql:dbname=database;host=localhost","username","password"); $SqlSorgusu = "SELECT * FROM KULLANICILAR WHERE YAS = :yas"; $Veri = '12'; $st = $db->prepare($SqlSorgusu); $st->bindParam(':yas', $Veri); $st->execute(); print_r($st->fetchAll(PDO::FETCH_ASSOC)); // Çıktısı KULLANICILAR Tablosunda Bulunan ve YAS = 12 Olan Kayıtlar Olacaktır. |
merhaba hocam, ekstradan bindParam kullanmanın numarası nedir? prepare execute yapmak güvenlik için yeterli değil mi? bindParam sorguya ne katıyor?
Merhaba,
bindParam kullanılmasının en büyük avantajı sqlinjection’a karşı ek bir güvenlik sağlamaktır.
bindParam kullanıldığında değişken parametreler sonradan sorguya çağırılır direk sorguya dahil edilip çalıştırılmaz, yani önce denetlenir.
Buda sorgu kırılmaları için önemli bir katman oluşturur.
Yukarıda verdiğim örnekte belirtmemişim fakat bindParam için en doğru kullanım şekli şu şekilde olacaktır,
Yukarıdaki örnekten gidersek YAS parametremiz INT olarak gelmesi gereken bir parametre.
Eğer şu şekilde bu parametreyi çağırısak;
$st->bindParam(‘:yas’, $Veri, PDO::PARAM_INT);
YAS verimiz için sadece Sayısal değerler kabul edilecektir yani herhangi bir string veya özel karakter kabul edilmeyecektir.
bindParam için kullanacağımız diğer değişken tipleri de şu şekildedir,
PDO::PARAM_INT
PDO::PARAM_STR
PDO::PARAM_BOOL
PDO::PARAM_NULL
PDO::PARAM_LOB
vb.
Değişkenlerin Devamı için PHP.NET PDO Constants
Parametre kullanımı ile ilgili PHP.NET PDO bindParam