• 04-07-2024, 19:03:25
    #1
    Merhaba, bir sitem mevcut. Yaklaşık 6000 satır olduğu için sql injection engellemek çok zahmetli olacak. Sorum şu; Cloudflarede herhangi bir ayar ile bu engellenebilir mi? Biraz araştırdığımda waf ile engellenilebilir yazıyordu fakat tam çözemedim.
  • 04-07-2024, 19:07:47
    #2
    Hayır
  • 04-07-2024, 19:10:11
    #3
    satrancali adlı üyeden alıntı: mesajı görüntüle
    Hayır
    Hocam peki şu şekilde engellenebilir mi?

    (mevcut kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin) VALUES ('$karakteradi', '$hesap', '$gorunus', '$biyografi', '$soru1', '$soru2', '$soru3', '$soru4', '$soru5', '$soru6', '$tenrengi', '$cinsiyet', '$dogumyeri', '$yas', '$sifre_hashed', '$skin')";

    (güncel kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin)
    VALUES (:karakteradi, :hesap, :gorunus, :biyografi, :soru1, :soru2, :soru3, :soru4, :soru5, :soru6, :tenrengi, :cinsiyet, :dogumyeri, :yas, :sifre, :skin)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
    ':karakteradi' => $karakteradi,
    ':hesap' => $hesap,
    ':gorunus' => $gorunus,
    ':biyografi' => $biyografi,
    ':soru1' => $soru1,
    ':soru2' => $soru2,
    ':soru3' => $soru3,
    ':soru4' => $soru4,
    ':soru5' => $soru5,
    ':soru6' => $soru6,
    ':tenrengi' => $tenrengi,
    ':cinsiyet' => $cinsiyet,
    ':dogumyeri' => $dogumyeri,
    ':yas' => $yas,
    ':sifre' => $sifre_hashed,
    ':skin' => $skin
    ]);
  • 04-07-2024, 19:47:52
    #4
    deks adlı üyeden alıntı: mesajı görüntüle
    Hocam peki şu şekilde engellenebilir mi?

    (mevcut kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin) VALUES ('$karakteradi', '$hesap', '$gorunus', '$biyografi', '$soru1', '$soru2', '$soru3', '$soru4', '$soru5', '$soru6', '$tenrengi', '$cinsiyet', '$dogumyeri', '$yas', '$sifre_hashed', '$skin')";

    (güncel kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin)
    VALUES (:karakteradi, :hesap, :gorunus, :biyografi, :soru1, :soru2, :soru3, :soru4, :soru5, :soru6, :tenrengi, :cinsiyet, :dogumyeri, :yas, :sifre, :skin)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
    ':karakteradi' => $karakteradi,
    ':hesap' => $hesap,
    ':gorunus' => $gorunus,
    ':biyografi' => $biyografi,
    ':soru1' => $soru1,
    ':soru2' => $soru2,
    ':soru3' => $soru3,
    ':soru4' => $soru4,
    ':soru5' => $soru5,
    ':soru6' => $soru6,
    ':tenrengi' => $tenrengi,
    ':cinsiyet' => $cinsiyet,
    ':dogumyeri' => $dogumyeri,
    ':yas' => $yas,
    ':sifre' => $sifre_hashed,
    ':skin' => $skin
    ]);
    Prepared STMT bunun icin var zaten. Emulasyon modunda PDO, diger turlu DB'nin prepared stmt destegi varsa DB kendi escape eder disaridan gelen inputlari.
  • 04-07-2024, 20:04:22
    #5
    CSA
    Digital Agency
    Büyük ölçüde evet, belirli bir yere kadar engelleyebilir. İnsanların gözünde Cloudflare, bir anti ddos çözümü olarak görünse de, aslında tamamen sizin belirlediğiniz kurallara bağlı olarak çalışan, istediğiniz gibi şekillendirebildiğiniz modüler bir yapıya sahiptir. Belirli parametreler ve istekler için kurallar oluşturarak, birçok sql injection saldırısından kendinizi koruyabilirsiniz.
  • 04-07-2024, 20:09:25
    #6
    Eskiden engelliyordu basit atakları kendi sitemde denemiştim ama tamamen ona güvenmek pek mantıklı değil.
  • 04-07-2024, 20:19:51
    #7
    Gerekli rulelar belirlenirse belli oranda engeller ancak 6k satırdan bahsediyorsanız illa aradan sıyrılan değerler olur. Buradan cloudflarein kendi açıklamasını inceleyebilirsiniz.

    Proje büyük bir proje ise güvenlik testi yaptırmanızı öneririm çünkü waflar atlatılabiliyor açık bırakırsanız sıkıntıya girersiniz.
  • 04-07-2024, 21:22:40
    #8
    deks adlı üyeden alıntı: mesajı görüntüle
    Hocam peki şu şekilde engellenebilir mi?

    (mevcut kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin) VALUES ('$karakteradi', '$hesap', '$gorunus', '$biyografi', '$soru1', '$soru2', '$soru3', '$soru4', '$soru5', '$soru6', '$tenrengi', '$cinsiyet', '$dogumyeri', '$yas', '$sifre_hashed', '$skin')";

    (güncel kod)
    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin)
    VALUES (:karakteradi, :hesap, :gorunus, :biyografi, :soru1, :soru2, :soru3, :soru4, :soru5, :soru6, :tenrengi, :cinsiyet, :dogumyeri, :yas, :sifre, :skin)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
    ':karakteradi' => $karakteradi,
    ':hesap' => $hesap,
    ':gorunus' => $gorunus,
    ':biyografi' => $biyografi,
    ':soru1' => $soru1,
    ':soru2' => $soru2,
    ':soru3' => $soru3,
    ':soru4' => $soru4,
    ':soru5' => $soru5,
    ':soru6' => $soru6,
    ':tenrengi' => $tenrengi,
    ':cinsiyet' => $cinsiyet,
    ':dogumyeri' => $dogumyeri,
    ':yas' => $yas,
    ':sifre' => $sifre_hashed,
    ':skin' => $skin
    ]);
    Veri tipi de belirtirseniz daha sağlıklı olur.

    $sql = "INSERT INTO basvurular (karakteradi, hesap, gorunus, biyografi, soru1, soru2, soru3, soru4, soru5, soru6, tenrengi, cinsiyet, dogumyeri, yas, sifre, skin)
    VALUES (:karakteradi, :hesap, :gorunus, :biyografi, :soru1, :soru2, :soru3, :soru4, :soru5, :soru6, :tenrengi, :cinsiyet, :dogumyeri, :yas, :sifre, :skin)";
    
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':karakteradi', $karakteradi, PDO::PARAM_STR);
    $stmt->bindParam(':hesap', $hesap, PDO::PARAM_STR);
    $stmt->bindParam(':gorunus', $gorunus, PDO::PARAM_STR);
    $stmt->bindParam(':biyografi', $biyografi, PDO::PARAM_STR);
    $stmt->bindParam(':soru1', $soru1, PDO::PARAM_STR);
    $stmt->bindParam(':soru2', $soru2, PDO::PARAM_STR);
    $stmt->bindParam(':soru3', $soru3, PDO::PARAM_STR);
    $stmt->bindParam(':soru4', $soru4, PDO::PARAM_STR);
    $stmt->bindParam(':soru5', $soru5, PDO::PARAM_STR);
    $stmt->bindParam(':soru6', $soru6, PDO::PARAM_STR);
    $stmt->bindParam(':tenrengi', $tenrengi, PDO::PARAM_STR);
    $stmt->bindParam(':cinsiyet', $cinsiyet, PDO::PARAM_STR);
    $stmt->bindParam(':dogumyeri', $dogumyeri, PDO::PARAM_STR);
    $stmt->bindParam(':yas', $yas, PDO::PARAM_INT);
    $stmt->bindParam(':sifre', $sifre_hashed, PDO::PARAM_STR);
    $stmt->bindParam(':skin', $skin, PDO::PARAM_STR);
    $stmt->execute();