PHP Dersleri

PHP ile PDO MySQL Veri Güncelleme İşlemi | Update

PDO ile MySQL kayıt güncelleme işlemlerini prepare fonksiyonu ile gerçekleştiriyoruz. Bu metodu önceki derslerde fazlasıyla ayrıntılı bir biçimde işlemiştik. Prepare’nin en önemli özelliği SQL Injection açıklarından bizi kurtarmasıdır. Bu tarz açıklardan kurtulmak için prepare kullanmak zorundayız. Dilerseniz örnekler üzerinden kayıtın nasıl gerçekleştiğine bakalım.

Güvenlik Tedbirli, MySQL Veri Güncelleme İşlemi [1. YOL]

Kullanıcıdan gelen verilerin içeriği bizim için önemlidir. Buradaki önem gelen değerlerin gerçek bir veri olması veya saldırı teşkil edecek kodlar olmasıdır. “Bu devirde babana bile güvenmeyeceksin” denildiğine göre sitene gelen ziyaretçilere hiç güvenmemelisin. Veri tabanımızı koruyarak veri güncelleme işleminin nasıl olduğunu görelim.

$baslik   = "Deneme Başık\"da geçen ''''''2'' ''\"'' '' '' ";
$time     = date("d.m.Y - H:i:s");
$Guncelle= $vt->prepare("update makale set baslik=?,tarih=? where id=?");
$Guncelle->execute(array($baslik,$time,"2"));

Yukarıdaki örnekte; Veri tabanında bulunan bir veriyi güncellerken karşılaşacağımız, bizlere sıkıntı yaratacak karakterler yer almaktadır. Bu kullanım ile herhangi bir düzenleme yapmamamıza rağmen kayıt işlemi gerçekleşecekti. Fakat PDO yerine mysql_ ifadesini kullanmış olsaydık güncelleme işlemi gerçekleşmeyeceği gibi, gelen saldırı yüklü kod ile veri tabanımız hasar almış olacaktı.

PDO kullanarak bu şekilde gelen verileri neredeyse hiç filtreden geçirmeksizin güncelleme işlemini yapmak mümkündür. Bu sayede kod alanlarımız az ve temiz bir görünüme sahip olacaktır. Bununla beraber performanslı bir sistem hazırlamış olacağız.

Güvenlik Tedbirli, MySQL Veri Güncelleme İşlemi [2. YOL]

Öncelikle bu yeni bir kullanım değildir. Daha doğrusu burada farklı bir işlem gerçekleştirmiyoruz. Sadece belirlenen değerleri birer değişkene atayıp o şekilde işlemlerin yapılmasını sağlıyoruz. Örnek olarak aşağıda yer alan kodu incelebilirsiniz.

$baslik1 = "Deneme Başık\"da geçen ''''''2'' ''\"'' '' '' ";
$time1    = time();
$Guncelle1= $vt->prepare("update makale set baslik=:baslik,tarih=:tarih where id=:id");
$Guncelle1->execute(array("baslik" => $baslik1, "tarih" => $time1, "id" => "2"));

Bu kod ile de 1. Yolda yer alan kod arasında işlem ve güvenlik anlamında herhangi bir fark yoktur. Buradaki tek fark ” ? ” (Soru İşareti) ile belirlediğimiz yeri artık bir değişken adı ile belirlemedir. Bu yöntem sadece kod sahibinin tarzına bağlı olarak kullanabileceği bir değişik yoldur.

Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı