Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Hashowanie hasla + sol.
cvanyy
post 16.11.2015, 22:03:26
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.11.2015

Ostrzeżenie: (0%)
-----


Witam,
mecze sie juz z moim hashowaniem pare dni i dalej nie mam pojecia dlaczego to wszystko nie dziala.Rejestracja uzytkowniak przebiega bezproblemowo, jednak przy logowaniu nie widzi uzytkownikow i wywala blad, ze nie ma takiego uzytkowniaka. Zastanawiam sie czy przy dodawniu przy logowaniu soli do hasla, nie ma innego wyniku i dlatego nie przepuszcza. Od patrzenia na ten caly kod juz mam metlik, moze ktos z Was umie zobaczyc co jest tam nie tak?

Logowanie
  1. <?php
  2.  
  3. require_once "polaczenie_z_baza.php";
  4.  
  5. //nawiazanie polaczenia z baza
  6. $polaczenie = mysqli_connect($host, $db_user, $db_password, $db_name);
  7. //@ - wyciszenie bledow
  8. mysqli_select_db($polaczenie,"projekt");
  9.  
  10. if($polaczenie->connect_errno!=0)
  11. {
  12. echo "Error: ".$polaczenie->connect_errno;
  13. }
  14. else
  15. {//polaczenie nawiazane:
  16.  
  17. $login = $_POST['login'];
  18. $haslo =$_POST['haslo'];
  19.  
  20. $saltQuery = "SELECT salt FROM uzytkownik WHERE login ='$login'";
  21.  
  22. $result = mysqli_query($polaczenie, $saltQuery); //or die(mysql_error());
  23.  
  24. $row = mysqli_fetch_assoc($result);
  25.  
  26. $result->free();
  27. if ($result = $polaczenie->query($saltQuery)) {
  28.  
  29.  
  30. }
  31.  
  32. $salt = $row['salt'];
  33.  
  34. $saltedPW = $salt. $haslo;
  35.  
  36. $hashedPW = hash('sha256', $saltedPW);
  37.  
  38. //zapytanie sql
  39. $sql = "select * from uzytkownik where login ='$login' and haslo = '$hashedPW'";
  40.  
  41. //wyslanie zapytania do bazy:
  42. if($rezultat = $polaczenie->query($sql))
  43. {
  44.  
  45. $liczba_wierszy = $rezultat->num_rows;
  46.  
  47. if($liczba_wierszy == 1)
  48. {//pobranie danych z bazy danych:
  49.  
  50. //pobranie NAZW indeksow tablicy
  51. $wiersz = $rezultat->fetch_assoc();
  52.  
  53. $_SESSION['Imie'] = $wiersz['Imie'];
  54. $_SESSION['Nazwisko'] = $wiersz['Nazwisko'];
  55. $_SESSION['email'] = $wiersz['email'];
  56. $_SESSION['login'] = $wiersz['login'];
  57.  
  58. //zwolnienie
  59. $rezultat->free();
  60.  
  61. //przykladowe wypisanie na ekran:
  62. Echo "witaj ".$_SESSION['Imie']." ".$_SESSION['Nazwisko'];
  63. header('Location: index.php');
  64. //do usuniecia potem
  65. Echo'<a href="index.php">powrot do index.php</a>';
  66. }
  67. else
  68. {// 0 wierszy -> nie udalo sie zalogowac!
  69.  
  70. $_SESSION['msg']='<sman style="color:red">Nieprawidlowy login lub haslo!</span>';
  71.  
  72. header('Location: index.php');
  73. }
  74. }
  75. else{
  76. Echo"Error:<br/>Zle zapytanie sql<br/>";
  77. }
  78.  
  79.  
  80.  
  81.  
  82. //zamkniecie polaczenia z baza:
  83. $polaczenie->close();
  84. }
  85. ?>


Rejestracja:
  1. <?php
  2.  
  3. require_once "polaczenie_z_baza.php";
  4.  
  5. //nawiazanie polaczenia z baza
  6. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  7. //@ - wyciszenie bledow
  8.  
  9. //nie nawiazano polaczenia z baza
  10. if($polaczenie->connect_errno!=0)
  11. {
  12. echo "Error: ".$polaczenie->connect_errno;
  13. }
  14. else
  15. {//polaczenie nawiazane:
  16.  
  17. //pobranie danych z formularza
  18. $login =mysql_real_escape_string( $_POST['login']);
  19. $haslo1 =mysql_real_escape_string( $_POST['haslo1']);
  20. $haslo2 = $_POST['haslo2'];
  21. $nazwisko = $_POST['nazwisko'];
  22. $imie = $_POST['imie'];
  23. $email = $_POST['email'];
  24. //*************************kodowanie "SÓL"***************************
  25. $salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
  26.  
  27. $saltedPW = $haslo1 . $salt;
  28. $hashedPW = hash('sha256', $saltedPW);
  29. //zapytanie sql
  30.  
  31. //do sprawdzenia, czy login nie jest juz zajety
  32. $sql_login = "select * from uzytkownik where login ='$login'";
  33.  
  34. //do sprawdzenia, czy email nie jest juz zajety
  35. $sql_email = "select * from uzytkownik where email ='$email'";
  36.  
  37. $sql_email="INSERT INTO `projekt`.`uzytkownik` (`id`, `Imie`, `Nazwisko`, `email`, `login`, `haslo`, salt) VALUES (NULL, '$imie', '$nazwisko', '$email', '$login', '$hashedPW', '$salt')";
  38. ?>


Z gory dziekuje za pomoc. smile.gif

Ten post edytował cvanyy 16.11.2015, 22:06:11
Go to the top of the page
+Quote Post
nospor
post 16.11.2015, 22:09:29
Post #2





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




$saltedPW = $haslo1 . $salt;
$saltedPW = $salt. $haslo;

Naprawde trzeba na forum takich bledow szukac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cvanyy
post 16.11.2015, 22:46:10
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.11.2015

Ostrzeżenie: (0%)
-----


To zmienialem juz podczas wykorzystywania kazdej kombinacji, dalej nic smile.gif takze nie w tym tki problem :/
Go to the top of the page
+Quote Post
nospor
post 16.11.2015, 22:47:28
Post #4





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




To przygotuj prosze poprawna wersje bo nie chce mi sie marnowac czasu na szukanie bledow w Twojej kolejnej kombinacji. Programowanie to nie losowe kombinacje a przemyslane dzialanie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 16.11.2015, 22:56:13
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


jaka długość pola na hasło w bazie ?
Go to the top of the page
+Quote Post
cvanyy
post 16.11.2015, 23:11:03
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.11.2015

Ostrzeżenie: (0%)
-----


varchar(60).

nospar wrzucam Ci teraz gotowy taki jak ma byc kod logowania.

Logowanie
  1. $login = $_POST['login'];
  2. $haslo =$_POST['haslo'];
  3.  
  4. $saltQuery = "SELECT salt FROM uzytkownik WHERE login ='$login'";
  5.  
  6.  
  7. $result = mysqli_query($polaczenie, $saltQuery); //or die(mysql_error());
  8.  
  9.  
  10.  
  11. $row = mysqli_fetch_assoc($result);
  12.  
  13. $salt = $row['salt'];
  14.  
  15. $saltedPW = $haslo. $salt;
  16.  
  17. $hashedPW = hash('sha256', $saltedPW);
  18. //prymitywne logowanie:
  19.  
  20. //zapytanie sql
  21. $sql = "select * from uzytkownik where login ='$login' and haslo = '$hashedPW'";
Go to the top of the page
+Quote Post
nospor
post 16.11.2015, 23:15:56
Post #7





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




No i sprawdz sobie teraz jak wyglada dokladnie salt ktory pobrales z bazy, jak wyglada haslo, jak wyglada $hashedPW i czy sie pokrywa z tym co w bazie.
To sa podstawowe etapy debugowania ktore juz dawno powinienies byl zrobic


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cvanyy
post 16.11.2015, 23:44:03
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.11.2015

Ostrzeżenie: (0%)
-----


Sol i haslo jest calkowicie inne niz w bazie, jak to mozliwe skoro pobieram to wszystko z bazy ?
Go to the top of the page
+Quote Post
Pyton_000
post 17.11.2015, 08:57:33
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Cytat(cvanyy @ 16.11.2015, 23:11:03 ) *
varchar(60).


To teraz policz sobie ile znaków ma wynik z SHA256.
Dla przykładu taki:

6f25b3f4bc7eadafb8f57d69f8a59db3b23f198151dbf3c66ac3082381518329
Go to the top of the page
+Quote Post
sowiq
post 17.11.2015, 12:12:04
Post #10





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. $login = $_POST['login'];
  2.  
  3. $saltQuery = "SELECT salt FROM uzytkownik WHERE login ='$login'";


Serio w dzisiejszych czasach ludzie robią jeszcze takie rzeczy? :/
Go to the top of the page
+Quote Post
cvanyy
post 18.11.2015, 19:44:06
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.11.2015

Ostrzeżenie: (0%)
-----


Dziekuje za podpiwiedzi, zmienilem rozmiar tabeli i wszystko dziala jak nalezy smile.gif

Mam natomiast jeszcze jeden problem z zapytaniem SQL. Mianowicie chodzi o to, ze chce wyznaczyc srednia ocen wystawionych dla uzytkownika z tabeli komentarze. I nie wiem czy moge uzyc samego AVG czy musze zsumowac wszystkie oceny i dopiero z tego wyliczyc srednia. Moze ktos podpowiedziec jak powinno wygladac poprawne zapytanie ?

Go to the top of the page
+Quote Post
Pyton_000
post 18.11.2015, 21:35:01
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To temat na inną dyskusję.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.05.2025 - 05:44