• 13-03-2022, 14:26:02
    #1
    Merhaba, R10'daki konuları ve farklı kaynakları inceleyerek scripte yorum yap bölümü ekledim. Ancal Sql injection kısmında sorun yaşadım. Aşağıdaki kodlar sorun yaratır mı?

    <?php
    if($_POST)
    {
        $query = $DB->INSERT("yorumlar","id,yorum_detay,yorum_ad,k_id",
                        "'".$_POST["id"]."','".$_POST["yorum_detay"]."','".$_POST["yorum_ad"]."','".$_POST["k_id"]."'");    
        if($query)
        { 
               echo alert("Başarılı","Yorumunuz incelendikten sonra yayınlanacaktır.");
        }
        else
        {
            echo alert("Hata","İşlem gerçekleştirilirken bir hata oluştu.");
        }
    }
    ?>
    
       <form  class="yorumlar" action="" method="post">
                           <input type="hidden" name="id" value="<?php echo $yorumlar["id"]; ?>">
                            <input type="hidden" name="k_id" value="<?php echo $detay["k_id"]; ?>"> 
    
                          <textarea name="yorum_detay" required placeholder="Yorumunuz..."></textarea>
    
                          <div class="form-comment">
                            <input type="text" name="yorum_ad"  placeholder="Adınız, Soyadınız...">
                            </div>
                      </form>
  • 13-03-2022, 14:28:32
    #2
    SQL İnjection 2 şey nedeni ile oluşur.
    1-) Veritabanı içerisinde Numerik karakter kullanmak.
    2-) Veritabanı içerisinde Meta karakter kullanmak.

    Siber güvenlik okuyorum, benim bildiğim 2 kriter bu şekilde.
  • 13-03-2022, 14:29:37
    #3
    Dilerseniz Ücretli PHP Güvenlik Yazılımı sağlayabiliriz böylece scriptlerde açık kapatmak ile uğraşmazsınız.
  • 13-03-2022, 14:31:06
    #4
    Html tagları ve bypasslayacak şeylere engel koyabilirsiniz. Xss de olabilir burda aynı şekilde engellemenin en bilindik yolu tagları yasaklamak veya “> </ gibi özel karakterleri yasaklayabilirsiniz.
  • 13-03-2022, 14:44:22
    #5
    $_post u filtrelemeden direk db ye eklerseniz hem açık oluşur hem karakter hatası verir hemde synax hataları verir.
  • 13-03-2022, 14:50:32
    #6
    $id = (ctype_digit($_POST["id"]))? $_POST["id"] : "buraya veritabanından bir id örnek: 3";
    $k_id = (ctype_digit($_POST["k_id "]))? $_POST["k_id"] : " buraya veritabanında bir k_id örnek: 10";
    $yorum_detay=$_POST["yorum_detay"] ;
    $yorumad=$_POST["yorum_ad"] ;
    $yorum_ad = strip_tags($yorumad ,"<b><strong><ul><br><li><p><em>");
    $atext = strip_tags($yorum_detay ,"<b><strong><ul><br><li><p><em>");
    if (is_numeric($id) && $id > 0) {
    Buraya kodlar
    }
    "'".$id."','".$_POST["atext "]."','".$yorum_ad ."','".$k_id."'");