v2.5.2
Giriş yap

Php base64_encode ve base64_decode kullanımı sorunu

yazilimyolcusu
408 defa görüntülendi

Merhabalar. Benim şöyle bir sorunum var. Siteye kullanıcı kaydı yaparken base64_encode ile kayıt yapabiliyorum. Kaydı çekeceğimde ise veritabanındaki şifreli kodu şifre alanına girsem dahi giriş yapamıyorum. Hata da vermiyor. Giriş alanının kodlarını kısaca koyuyorum. Bu arada "$_POST" alanlarına "strip_tags" ve "trim" gibi şeyler koymadığımda da olmuyor. Yani aşağıdaki gibi kullandığımda da olmuyor. Ne yapmam lazım acaba?

<?php
    $ad    = $_POST['ad'];
    $parola  = base64_decode($_POST['sifre']);

    $query  = "SELECT * FROM kullanici WHERE kullanici_ad = '$ad' AND kullanici_sifre = '$parola'";
    $mysqli    = mysqli_query($db, $query);
    $sonuc = mysqli_fetch_array($mysqli);

    if(($sonuc['kullanici_ad'] == $ad) AND ($sonuc['kullanici_sifre'] == $parola)) {
       " BURADA GİRİŞ YAPIYOR "
?>
Cevap yaz
Cevaplar (5)
rephp7
1017 gün önce

kullanıcı tablonda kullanıcı_sifre alanındaki şifreyi encode ile kaydedip $query ile veri çekerken neden decode olarak eşleştiriyorsun ki?
Kısaca şifreli alanı şifresi çözülmüş parola ile eşleştirirsen veri çekmez.
$parolayı decode değil encode yapıp dener misin?

orange
983 gün önce

Merhaba,

Lütfen kanıtlanmış hash algoritmalarını kullanın. İnsanların güvenini zedelemeyin, veriyi güvende tutmak en büyük sorumluluğumuz.

ismailslmnv
983 gün önce

Aslında burada eğer güzel bir iş çıkartmak istiyorsan şunu göz önünde bulundurman lazım, veriyi b64 encode edip tutman ile cleartext tutman arasında hiç bir fark olmuyor.
Onun yerine bir hash algoritmasından geçirip o şekilde tutman senin faydana olacaktır. Bunun için md5, sha256 yada blowfish algoritmalarına bakabilirsin.

rephp7
1017 gün önce

sen burda
$parola = base64_decode($_POST['sifre']);
ile kulanıcın forma yazdığı parolanın şifresini çözüyorsun. kullanıcı parolasını şifrelenmiş yazmadı ki!
kullanıcı parolasını yazar sen bunu şifreli olarak okur, tablondaki şifreli parola ile eşleştirirsin.

yada tablondan $_post["kullanıcı_adi] ile eşleşen veriyi çeker ve çektiğin kullanıcı parolasını çözersin
if(base64_decode($sonuc["kullanıcı_parola]) == $_post["sifre"] ) { //giriş izni verirsin}else{//hatakodu gösterirsin}

yazilimyolcusu
1017 gün önce

Veritabanına şifreli olarak kaydedilmiş veriyi, veritabanından çekerken şifresi çözülmüş olarak çekmek gerekmiyor mu? Mantığını tam anlayamadım galiba?