• 07-04-2019, 03:28:06
    #1
    arkadaşlar mevcut kodları paylaşıyorum size giriş yaptırdığım
    <?php
                    ob_start();
                    session_start();                
                    include 'config.php';              
                      if($_POST)
                      {
                      $username = $_POST['username'];
                      $password = $_POST['password'];                  
                      $sql = "SELECT * FROM users where username='$username' or mail='$username' and password='$password'";
                      $sonuc = $baglanti->query($sql);
                      if ($sonuc->num_rows > 0)
                      {
                      $_SESSION["login"] = "Giriş yapılıyor...";
                        header("Refresh:1; url=./homepage.php");
                      }
                      else{                  
                        $_SESSION["error"] = "Kullanıcı adı veya Şifreniz yanlış!";
                      }                  
                      echo '<br>  '. $_SESSION["error"];    
                      }
                    ?>
    burada kullanıcı adı veya e-posta ile giriş yaptırmak istiyorum ikisiyle giriş yaptırmaya çalıştığımda şifreyi yanlış bile girsem panele giriş yapıyor eğer
    or mail='$username'
    bu kodu silersem doğru şekilde çalışıyor ama ben kullanıcı adı ve eposta ikisinden birini giriş yaptırmak istiyorum
  • 07-04-2019, 03:29:27
    #2
    (username='$username' or mail='$username')
    böyle yapın
  • 07-04-2019, 03:33:51
    #3
    Cycl0ne adlı üyeden alıntı: mesajı görüntüle
    (username='$username' or mail='$username')
    böyle yapın
    dediğiniz şekilde sorun çözüldü teşekkürler hocam
  • 07-04-2019, 03:40:25
    #4
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$password'";
    şeklinde olmalıdır, fakat bu şekilde giriş işlemi yaparken username ve mail verilerini benzersiz olarak kayıt edilmiş olması gerekiyor.
    Ek olarak güvenlik açısından şifrelerini SQL'de saklarken ve geri çağırırken
    $salt = "hernagibirkelime";
    $salt_pw = md5(sha1($passwork.$salt));
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$salt_pw'";
    kolay gelsin
  • 07-04-2019, 03:51:57
    #5
    birenksec adlı üyeden alıntı: mesajı görüntüle
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$password'";
    şeklinde olmalıdır, fakat bu şekilde giriş işlemi yaparken username ve mail verilerini benzersiz olarak kayıt edilmiş olması gerekiyor.
    Ek olarak güvenlik açısından şifrelerini SQL'de saklarken ve geri çağırırken
    $salt = "hernagibirkelime";
    $salt_pw = md5(sha1($passwork.$salt));
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$salt_pw'";
    kolay gelsin

    hocam verdiğiniz kodu bu şekilde yazdığımda giriş yapabiliyorum bir sorun oluşmaz ilerde sanırım değilmi
    $salt_pw = md5($password);
                        $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$salt_pw'";
    oradaki $salt değişkenini neden yazdınız hocam
  • 07-04-2019, 05:40:24
    #6
    Sql üzerinde kullanıcıların girdiği şekilde şifreleri tutmak büyük bir hatadır. SQL injection yersen ilk ele geçecek yer şifreler ve kullanıcı verileridir. Bu sepetle şifreleri md5() ve sha1() kullanarak criptoluyoruz. Bu cripto geri döndürülemez. sayı ve rakamlar oluşturur. Fakat yine de MD5 generator siteler var, saldırı yapak yada şifreleri çalmak istediklerinde sadece md5() ile şifrelenmiş şifreler kırılabiliyor. $salt değişkeni ile $_post üzerinden gelen string birleşince. Tahmin edilemez kırılamaz güvenli bir şifre ortaya çıkıyor. Maksat burada güvenliği en üst düzeye çıkartmak. Daha detaylı bilgi ve ileri düzey teknikler için sql şifre saklama diye arama yaptırabilirsin.
    Umarım faydası dokunur, kodun şu haliyle iadare eder.
  • 07-04-2019, 09:13:30
    #7
    en kısa zamanda pdo kullanmanız dileğiyle
  • 07-04-2019, 14:40:16
    #8
    Bybitter adlı üyeden alıntı: mesajı görüntüle
    en kısa zamanda pdo kullanmanız dileğiyle
    umarım bende onu düşlüyorum

    hocam php pdo bildiğiniz bir kitap varmıdır?



    birenksec adlı üyeden alıntı: mesajı görüntüle
    Sql üzerinde kullanıcıların girdiği şekilde şifreleri tutmak büyük bir hatadır. SQL injection yersen ilk ele geçecek yer şifreler ve kullanıcı verileridir. Bu sepetle şifreleri md5() ve sha1() kullanarak criptoluyoruz. Bu cripto geri döndürülemez. sayı ve rakamlar oluşturur. Fakat yine de MD5 generator siteler var, saldırı yapak yada şifreleri çalmak istediklerinde sadece md5() ile şifrelenmiş şifreler kırılabiliyor. $salt değişkeni ile $_post üzerinden gelen string birleşince. Tahmin edilemez kırılamaz güvenli bir şifre ortaya çıkıyor. Maksat burada güvenliği en üst düzeye çıkartmak. Daha detaylı bilgi ve ileri düzey teknikler için sql şifre saklama diye arama yaptırabilirsin.
    Umarım faydası dokunur, kodun şu haliyle iadare eder.
    hocam peki

    $password = $_POST['password'];
    $salt_pw = md5($password);
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$salt_pw'";
    bu şekilde yaptığımda sizin yazdığınız salt değişkeniyle aynı durum oluyormu
  • 11-04-2019, 19:50:25
    #9
    chemochan adlı üyeden alıntı: mesajı görüntüle
    umarım bende onu düşlüyorum

    hocam php pdo bildiğiniz bir kitap varmıdır?





    hocam peki

    $password = $_POST['password'];
    $salt_pw = md5($password);
    $sql = "SELECT * FROM users where (username='$username' or mail='$username') and password='$salt_pw'";
    bu şekilde yaptığımda sizin yazdığınız salt değişkeniyle aynı durum oluyormu
    $salt_pw = md5($password); ile $salt_pw = md5($password.$salt); arasında fark var 2. mesajda durumu açıklamıştım. md5 çözen bazı sitele mevcut ve deneme yoluyla nispeten kırılabilir. Tam güvenlik için senin bildiğin bir "$salt" değişkeni ile md5() çalıştırırsan daha sağlıklı olur