skip to Main Content

PHP PDO Nedir ? SQL Injection Saldırı senaryosu

PHP Veri Nesneleri (PDO), çeşitli veritabanlarına erişim için oldukça hafif ve tutarlı bir arayüz sunan bir PHP programlama dili eklentisidir. PDO arayüzü bulunan veritabanı sürücüleri yardımıyla, veritabanına özgü işlevler genel PHP eklenti işlevleri olarak çalıştırabilirler.

Kaynak : Wikipedia

SQL Injection’dan Korunma

PDO’nun en sevdiğim yanı diyebilirim hemen örnek bir saldırı senaryosu oluşturalım

MYSQL  

$connect = mysql_connect("localhost","root","root");
mysql_select_db("portal",$connect);
$sql= "SELECT * FROM uyeler WHERE id = '$_GET[id]'";
$result= mysql_query($sql,$connect);
while ($row=mysql_fetch_array($result))
{
 echo $row['isim']." ";
 echo $row['soyisim']."<br />";
}
echo "<br />";
echo "çalıştırılan sorgu : ".$sql;

Yukarıda yazmış olduğumuz kod çok kolay şekilde ByPasslanmaktadır nasıl diye soracak olursanız id değerine ‘OR ‘x’=’x değerlerini girmeniz yeterli olacaktır uyeler tablosunda ki tüm kullanıcıları listeleyecektir.

PDO ile bu durumu nasıl düzeltebiliriz hemen yazalım

try {
     $db = new PDO("mysql:host=localhost;dbname=portal", "root", "root");
} catch ( PDOException $e ){
     print $e->getMessage();
}
$Gelen = $_GET["id"]; 
 
$Ara = $db->prepare("SELECT * FROM uyeler WHERE uyeler_id=:id"); 
 
$Ara->execute(array("id" => $Gelen)); 
 
$Liste = $Ara->fetchAll(PDO::FETCH_ASSOC); 
 
if($Ara->rowCount() != "0"){ 
 
foreach($Liste as $Bas){
echo $Bas['uyeler_isim'];
echo $Bas['uyeler_soyisim'];
}
else
{
echo " Kullanıcı Bulunamadı";
}

PDO Candır diyerek konumu sonlandırıyorum görüşmek üzere.

Bir cevap yazın

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

Back To Top