• 20-09-2013, 15:30:34
    #1
    İnternette yaptığım araştırmalarda hep bilgi kirliliğine ulaştım daha doğrusu her yeni makalede kafamın daha fazla karıştığını hissettim o yüzden buradan düzgün bir cevap almayı umuyorum. ez_sql_pdo sınıfını kullanıyorum ve sorgularım şu şekilde.

    $catid = $_GET["id"];
    $topics = $db->get_results("SELECT * FROM topics WHERE catid=".$catid." ORDER BY updatedate ASC");
    if($topics){
     foreach ($topics as $topic) {
      echo $topic->title;
    }
    }
    mesela topic.php?id='3 dediğim zaman direk sql sorgumu hata şeklinde ekrana basıyor. Ciddi birşekilde açıkvar çünkü hiçbir filtreleme yapmıyorum. Burada nasıl bir filtreleme yaparsam sorgum güvenli olur?
  • 20-09-2013, 15:57:06
    #2
    Üyeliği durduruldu
    sorun ez_sql de değil. googleda php sql injection de arama yaparsan sorununa çözüm bulabilirsin.
  • 20-09-2013, 16:05:14
    #3
    her veri filtrelemeden işlemeden SQL'e verilirse bugün olmasa da yarın sıkıntı çıkar. gelen id değerini süz, temizle sonra ver bence. istersen preg_replace() ile temizle istersen intval() ile sayısal değerini al istersen bunun için kendine bir fonksiyon yaz orası sana kalmış ama ham veriyi doğrudan SQLe verme.
  • 20-09-2013, 16:08:59
    #4
    aldığınız değer zaten sayısal bir ifade.
       $catid = $_GET["id"];
    bunun için şöyle birşey yapacaksınız.
       $catid = $_GET["id"]; 
    if(!is_numeric($catid)){header("location:index.php");exit("");}
    eğer ki sayısal ifade değilse
    $deger=$db->escape($_GET['deger']);
    gibi.
  • 20-09-2013, 16:13:01
    #5
    Rigobert adlı üyeden alıntı: mesajı görüntüle
    aldığınız değer zaten sayısal bir ifade.
       $catid = $_GET["id"];
    bunun için şöyle birşey yapacaksınız.
       $catid = $_GET["id"]; 
    if(!is_numeric($catid)){header("location:index.php");exit("");}
    eğer ki sayısal ifade değilse
    $deger=$db->escape($_GET['deger']);
    gibi.
    escape bunun için yeterli oluyor mu?
  • 20-09-2013, 16:14:39
    #6
    o tarz fonksiyonlar karakterleri temizlerler ve açığı kapatırlar. ondan sonrası da size kalmış.
  • 20-09-2013, 16:17:50
    #7
    Rigobert adlı üyeden alıntı: mesajı görüntüle
    o tarz fonksiyonlar karakterleri temizlerler ve açığı kapatırlar. ondan sonrası da size kalmış.
    Hani bize kalmış derken tam olarak neyi kastediyorsunuz? Bu yeterli değil daha fazlasını yapmanız lazım tarzı birşey mi söz konusu?
  • 03-01-2014, 00:58:43
    #8
    Ezsql in escape özelligi bulunmakta
  • 09-06-2015, 11:20:41
    #9
    $...=$db->escape($_POST[...]); şeklinde post ettiğin verileri güvenli hale getirebilirsin. bu ezsqlin bir fonksiyonu