• 18-10-2013, 01:04:07
    #1
    Reveloper
    if(mysql_num_rows($sql_check)){
    $_SESSION["login"] = true;
    $_SESSION["user"] = $email;

    }

    böyle birşey yapsam güvenli olur mu? ekstra ne eklemem gerekli?

    tam kod:
    <?php
    include("../configuration.php");
    
    $email = mysql_real_escape_string(trim($_POST['email']));
    $password = mysql_real_escape_string(trim($_POST['password']));
    
    if(empty($email) or empty($password)){
    	echo "<center>Lutfen kullanici adi ya da sifreyi bos birakmayiniz..! <a href=javascript:history.back(-1)>Geri Don</a></center>";
    }else if($_POST['login']){
    
    ob_start();
    session_start();
    
    $passwordmd5=md5($password);
    $sql_check = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$passwordmd5."' ") or die(mysql_error());
    
    if(mysql_num_rows($sql_check)){
        $_SESSION["login"] = true;
        $_SESSION["user"] = $email;
    	
    	$now=date('d.m.o H:i:s');
    	mysql_query("INSERT INTO user_log (process,datetime) VALUES ('Kullanıcı Girişi','$now')");
    
        header("Location:index.php");
    }else{
    	print '<script>alert("E-Posta Adresiniz veya Şifre Yanlış!");history.back(-1);</script>'; 
    }
    
    ob_end_flush();
    
    }else{echo 'Hack girişimi';}
    ?>
  • 18-10-2013, 14:59:35
    #2
    sağlıklı olmaz. session yerine setcookie kullanmalısın. verdiğin değerlerde session_id, kullanıcının ip adresi ve her kullanıcıya ait ayrı benzersiz karışık uzun bir kodun bulunması gerekli. bunları md5 veya sha ile şifreleyip karıştırarak cookielere kaydetmelisin. her işlemden önce bunların doğruluğunun karşılaştırmasını yapman gerekli
  • 18-10-2013, 17:29:06
    #3
    Reveloper
    yavuzk adlı üyeden alıntı: mesajı görüntüle
    sağlıklı olmaz. session yerine setcookie kullanmalısın. verdiğin değerlerde session_id, kullanıcının ip adresi ve her kullanıcıya ait ayrı benzersiz karışık uzun bir kodun bulunması gerekli. bunları md5 veya sha ile şifreleyip karıştırarak cookielere kaydetmelisin. her işlemden önce bunların doğruluğunun karşılaştırmasını yapman gerekli
    setcookie güvenli değil diye biliyorum?

    şimdi şey yaptım

    userid username password md5, sha1 ile güvenlik yaptım

    if($email==$veri['email']&&$password==$veri['password']){
       $yapi='.$id.'.'.$email.'.'.$password.';
       $yapimd5=md5($yapi);
       if($yapimd5==$veri['security']){
          echo 'OK';
       }else{
          echo 'ERROR';
       }
    }
    böyle birşey kabataslak yazdım olur mu?
  • 18-10-2013, 17:50:45
    #4
    Burti adlı üyeden alıntı: mesajı görüntüle
    setcookie güvenli değil diye biliyorum?

    şimdi şey yaptım

    userid username password md5, sha1 ile güvenlik yaptım

    if($email==$veri['email']&&$password==$veri['password']){
       $yapi='.$id.'.'.$email.'.'.$password.';
       $yapimd5=md5($yapi);
       if($yapimd5==$veri['security']){
          echo 'OK';
       }else{
          echo 'ERROR';
       }
    }
    böyle birşey kabataslak yazdım olur mu?
    Benzersiz oturum isimleri oluşturmuşsunuz, işinizi görecektir.
  • 18-10-2013, 21:13:57
    #5
    evet dikkatsiz kodlama açığa sebep olabilir. ama bu şekilde bi oturumla bi sıkıntı yaşaman zordan imkansıza doğru gider. user id yi çözümlemeye çalışman, bu şekilde bi oluşum için tüm veritabanındaki kullanıcıları taratmanı gerektirir. yada ekstradan bi çerez daha oluşturman ve onunla karşılaştırman gerekir. setcookie yi araştır biraz.
  • 19-10-2013, 06:01:29
    #6
    if($email==$veri['email']&&$password==$veri['password']){ 
       $yapi='.$id.'.'.$email.'.'.$password.'; 
       $yapimd5=md5($yapi); 
       if($yapimd5==$veri['security']){ 
          echo 'OK'; 
       }else{ 
          echo 'ERROR'; 
       } 
    }
    $veri['security']
    değerini şifrelerken yanına,önüne arkasına benzersiz bir key girmeni öneririm. daha sonra sorgularken o benzersiz keyi de işin içine katarsın. ama bu hali de güzel.
  • 19-10-2013, 13:00:55
    #7
    Reveloper
    Rigobert adlı üyeden alıntı: mesajı görüntüle
    if($email==$veri['email']&&$password==$veri['password']){ 
       $yapi='.$id.'.'.$email.'.'.$password.'; 
       $yapimd5=md5($yapi); 
       if($yapimd5==$veri['security']){ 
          echo 'OK'; 
       }else{ 
          echo 'ERROR'; 
       } 
    }
    $veri['security']
    değerini şifrelerken yanına,önüne arkasına benzersiz bir key girmeni öneririm. daha sonra sorgularken o benzersiz keyi de işin içine katarsın. ama bu hali de güzel.
    $_SESSION["login"] = true;
    $_SESSION["user"] = $email;

    eğer ok verdiyse bu şekilde tanımlama yapıyorum bunda sakınca yok dimi?
  • 19-10-2013, 18:34:37
    #8
    tek key oluştur girişte onu sql ine kaydet aynı şekilde sessionada ekle sessiondan geleni srgulatırsın o kullanıcı bilgisini istediğin değişkene atabileceksindir sorun yaşamazsın ben

    ben kullanıcı adını alıyorum rand ile bir değişken birleştiriyorum birde giriş yaptığı andaki time değişkenini birleştirir md5 ile key oluşturuyorum sanırım çözmülemesi zor oalcaktır... kullanıcının sifresini bu key içerisinde kullanmak bana biraz riskli geliyor kötü amaçlı bir kullanıcı önceki kişinin sifresini içerisinden çıkarma gibi bir riski olacaktır onun için sakıncalı görüyorum bu yüzden içerisine kullanıcı özel bilgilerini yerleştirmiyorum...