Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL][PHP]Zmiana kodu z MD5 do scram-sha-256 dla bazy postgres
Forum PHP.pl > Forum > Przedszkole
mov45
Witam, mam małą aplikację która działa (dzięki waszej pomocy) w szyfrowaniu md5 wykorzystując bazę postgres.
Chciałbym zmienić md5 na scram-sha-256

czy mógłbym prosić o podpowiedź jak zmienić mój kod, który załączam poniżej:

  1. <?php
  2.  
  3.  
  4.  
  5.  
  6.  
  7. if (!isset($_SESSION['login'])) {
  8.  
  9.  
  10. if ($_POST) {
  11.  
  12. $login = $_POST['login'];
  13. $haslo = md5($_POST['haslo'].'eddsssf');
  14. pg_prepare ("uzytkownicy", "SELECT * FROM uzytkownicy WHERE login = $1 AND haslo = $2");
  15. $rezultat = pg_execute("uzytkownicy", array($login, $haslo));
  16.  
  17. if(pg_num_rows($rezultat)>0) {
  18. $_SESSION['login'] = $login;
  19. $_SESSION['komunikat'] = 'Witaj zalogowany użytkowniku!';
  20. } else {
  21. echo "Nie udało sie zalogować - sprawdź login i hasło!!!" ;
  22. $data=date("Y-m-d H:i:s");
  23. $query = "INSERT INTO autoryzacje (ip, login, data, haslo) VALUES ('$ip', '$login', '$data', '$haslo') " ;
  24. pg_query($query);
  25.  
  26. require('views/viewLogin.php');
  27. die;
  28.  
  29. }
  30.  
  31. } else {
  32. require('views/vLogin.php');
  33. die;
  34. }
  35.  
  36. }
  37.  
nospor
md5 to nie jest szyfrowanie, tylko hashowanie.
Nie jestes w stanie przejsc z jednego hasha na inny od tak sobie. no chyba ze zhakujesz hasla uzytkownikow (co wcale nie jest takie trudne w md5) ale to nie do konca jest legalne wink.gif

ps: czemu w ogole chcesz przejsc na scram a nie na jakies zwykle SHA?
mov45
Witaj, zwykłe sha też może być tylko problem, iż nie wiem jak to zmienić w tym kodzie aby to zadziałało i pytanie jak będę musiał ustawić postgresa, gdyż na tą chwilę w pg_hba.conf w authentication method jest właśnie md5
nospor
Cytat
o i pytanie jak będę musiał ustawić postgresa, gdyż na tą chwilę w pg_hba.conf w authentication method jest właśnie md5

Mylisz dwie rzeczy: authentykacje postgres (np jakis klient sie laczy do postgress) oraz authentykacje ktora ty masz w kodzie php. To sa dwie rozne niezalezne od siebie rzeczy.

Zas jak zmienic to co ty masz? dodajesz nowa kolumne o nazwie np. NOWY_HASH i ustawiasz wszystkim userom na 0.
Jak sie loguje user i NOWY_HASH jest na 0, to logujesz go za pomoca starego kodu z md5. po zalogowaniu masz haslo usera, wiesz w pole HASLO moze teraz wpisac nowy hash i ustawic NOWY_HASH na 1.
Jak sie loguje user i NOWY_HASH jest na 1, to logujesz go przy pomocy nowego hasha a nie md5. I juz.
mov45
Ok, to jest jasne ale jak dostosować kod do SHA?

  1.  
  2. zamiast
  3. $login = $_POST['login'];
  4. $haslo = md5($_POST['haslo'].'eddsssf');
  5. pg_prepare ("uzytkownicy", "SELECT * FROM uzytkownicy WHERE login = $1 AND haslo = $2");
  6. $rezultat = pg_execute("uzytkownicy", array($login, $haslo));
  7.  

zamieienić
  1. $haslo = password_hash($_POST['haslo'].'eddsssf', PASSWORD);
  2.  
  3.  


Nie do końca wiem jak to pozamieniać
nospor
zamiast robic

pg_prepare ("uzytkownicy", "SELECT * FROM uzytkownicy WHERE login = $1 AND haslo = $2");

to rob
pg_prepare ("uzytkownicy", "SELECT * FROM uzytkownicy WHERE login = $1);
potem pobierz rekord uzytkownika.
Jesli kolumna NOWY_HASH jest 0, to porownaj haslo z bazy z haslem przepuszczonym przez md5()
Jesli kolumna nOWY_HASH jest 1 to porownaj haslo z bazy z haslem przepuszczonym przez password_hash()
mov45
ok, dzięki będę próbował...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.