• 28-01-2020, 02:16:17
    #1
    Merhabalar,

    Özel bir projemi yaparken SQL Injection açığını kapatmayı unuttum fakat mysqli_real_escape_string 'i kullandığımda tamam fixleniyor ama kendi hesabıma'da giriş sağlayamıyorum, az sonra ciddi anlamda kafayı sıyıracağım...

    <?php
    if($_POST){
    $username = mysqli_real_escape_string($_POST['username']);
    $sifre = mysqli_real_escape_string($_POST['sifre']);
    $sql1 = "SELECT * FROM users WHERE `kullanici_adi`='".$username."' AND `sifre`=md5('$sifre')";
    $result1 = $conn->query($sql1 );
    if($result1->num_rows > 0){
    $_SESSION['oturum'] = TRUE;
    $_SESSION['kullanici_adi'] = $username;
    $sql2 = "SELECT * FROM `users` WHERE `kullanici_adi`='".$username."'";
    $result2 = $conn->query($sql2);
    if ($result2->num_rows > 0) {
    while($row1 = $result2->fetch_assoc()) {
    $_SESSION['yetki'] = $row1["yetki"];
    }
    }
    if($_SESSION['yetki'] == 1) {
    git("0","admin/dagitimlar.php");
    } else {
    git("0","user/panel.php");
    }
    }else {
    echo "<div class=\"alert alert-danger\" role=\"alert\">❌ || Lütfen bilgilerinizi kontrol ediniz.</div>";
    }
    }
    ?>
    Buradaki tam olarak sorun nedir?

    Teşekkürler...
  • 28-01-2020, 02:22:58
    #2
    AhmetCVK adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Özel bir projemi yaparken SQL Injection açığını kapatmayı unuttum fakat mysqli_real_escape_string 'i kullandığımda tamam fixleniyor ama kendi hesabıma'da giriş sağlayamıyorum, az sonra ciddi anlamda kafayı sıyıracağım...

    <?php
    if($_POST){
    $username = mysqli_real_escape_string($_POST['username']);
    $sifre = mysqli_real_escape_string($_POST['sifre']);
    $sql1 = "SELECT * FROM users WHERE `kullanici_adi`='".$username."' AND `sifre`=md5('$sifre')";
    $result1 = $conn->query($sql1 );
    if($result1->num_rows > 0){
    $_SESSION['oturum'] = TRUE;
    $_SESSION['kullanici_adi'] = $username;
    $sql2 = "SELECT * FROM `users` WHERE `kullanici_adi`='".$username."'";
    $result2 = $conn->query($sql2);
    if ($result2->num_rows > 0) {
    while($row1 = $result2->fetch_assoc()) {
    $_SESSION['yetki'] = $row1["yetki"];
    }
    }
    if($_SESSION['yetki'] == 1) {
    git("0","admin/dagitimlar.php");
    } else {
    git("0","user/panel.php");
    }
    }else {
    echo "<div class=\"alert alert-danger\" role=\"alert\">❌ || Lütfen bilgilerinizi kontrol ediniz.</div>";
    }
    }
    ?>
    Buradaki tam olarak sorun nedir?

    Teşekkürler...

    PDO ya geç rahat et.
  • 28-01-2020, 02:26:57
    #3
    ('$sifre') yerine (". $sifre.") şeklinde dener misiniz?
  • 28-01-2020, 02:30:32
    #4
    AhmetBOZ adlı üyeden alıntı: mesajı görüntüle
    ('$sifre') yerine (". $sifre.") şeklinde dener misiniz?
    Maalesef ki aynı..



    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    PDO ya geç rahat et.
    Orası öyle de hocam işte
  • 28-01-2020, 03:17:08
    #5
    o kod yerine şu kodu kullan htmlspecialchars(trim(
  • 28-01-2020, 03:27:31
    #6
    AhmetCVK adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Özel bir projemi yaparken SQL Injection açığını kapatmayı unuttum fakat mysqli_real_escape_string 'i kullandığımda tamam fixleniyor ama kendi hesabıma'da giriş sağlayamıyorum, az sonra ciddi anlamda kafayı sıyıracağım...

    <?php
    if($_POST){
    $username = mysqli_real_escape_string($_POST['username']);
    $sifre = mysqli_real_escape_string($_POST['sifre']);
    $sql1 = "SELECT * FROM users WHERE `kullanici_adi`='".$username."' AND `sifre`=md5('$sifre')";
    $result1 = $conn->query($sql1 );
    if($result1->num_rows > 0){
    $_SESSION['oturum'] = TRUE;
    $_SESSION['kullanici_adi'] = $username;
    $sql2 = "SELECT * FROM `users` WHERE `kullanici_adi`='".$username."'";
    $result2 = $conn->query($sql2);
    if ($result2->num_rows > 0) {
    while($row1 = $result2->fetch_assoc()) {
    $_SESSION['yetki'] = $row1["yetki"];
    }
    }
    if($_SESSION['yetki'] == 1) {
    git("0","admin/dagitimlar.php");
    } else {
    git("0","user/panel.php");
    }
    }else {
    echo "<div class=\"alert alert-danger\" role=\"alert\">❌ || Lütfen bilgilerinizi kontrol ediniz.</div>";
    }
    }
    ?>
    Buradaki tam olarak sorun nedir?

    Teşekkürler...

    $sql1 = "SELECT * FROM users WHERE `kullanici_adi`='".$username."' AND `sifre`=".md5($sifre);

    olarak değiştir ilk hatan burada, daha da olmazsa echo ile değerler gidiyormu gitmiyormu doğrumu değilmi bir bak bakalım.
  • 28-01-2020, 03:42:25
    #7
    $username = mysqli_real_escape_string($conn,$_POST['username']);
    $sifre = mysqli_real_escape_string($conn,$_POST['sifre']);
    $sifre = md5($sifre);
    $sql1 = "SELECT * FROM users WHERE kullanici_adi='".$username."' AND sifre='".$sifre."'";
    $username = $conn->real_escape_string($_POST['username']);
    $sifre = $conn->real_escape_string($_POST['sifre']);
    $sifre = md5($sifre);
    $sql1 = "SELECT * FROM users WHERE kullanici_adi='".$username."' AND sifre='".$sifre."'";
    <?php
    if($_POST){
    $username = mysqli_real_escape_string($conn,$_POST['username']);
    $sifre = mysqli_real_escape_string($conn,$_POST['sifre']);
    $sifre = md5($sifre);
    $sql1 = "SELECT * FROM users WHERE kullanici_adi='".$username."' AND sifre='".$sifre."'";
    $result1 = $conn->query($sql1 );
    if($result1->num_rows > 0){
    $_SESSION['oturum'] = TRUE;
    $_SESSION['kullanici_adi'] = $username;
    $sql2 = "SELECT * FROM users WHERE kullanici_adi='".$username."'";
    $result2 = $conn->query($sql2);
    if ($result2->num_rows > 0) {
    while($row1 = $result2->fetch_assoc()) {
    $_SESSION['yetki'] = $row1["yetki"];
    }
    }
    if($_SESSION['yetki'] == 1) {
    git("0","admin/dagitimlar.php");
    } else {
    git("0","user/panel.php");
    }
    }else {
    echo '<div class="alert alert-danger" role="alert"><img draggable="false" class="emoji" alt="❌" src="//cdn.r10.net/emojis/html/274c.png"> || Lütfen bilgilerinizi kontrol ediniz.</div>';
    }
    }
    ?>
  • 29-01-2020, 01:27:19
    #8
    Çok teşekkür ederim