Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PostgreSQL][PHP]Zmiana kodu z MD5 do scram-sha-256 dla bazy postgres, W jaki sposób zmienić kod dla bazy postgres
mov45
post 11.10.2024, 13:23:16
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 20.10.2016

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


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.  
Go to the top of the page
+Quote Post
nospor
post 11.10.2024, 14:09:24
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


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

"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
mov45
post 11.10.2024, 15:13:33
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 20.10.2016

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


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
Go to the top of the page
+Quote Post
nospor
post 11.10.2024, 15:18:22
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


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

"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
mov45
post 11.10.2024, 15:35:26
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 20.10.2016

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


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ć
Go to the top of the page
+Quote Post
nospor
post 11.10.2024, 15:42:02
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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()


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

"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
mov45
post 11.10.2024, 15:43:56
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 20.10.2016

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


ok, dzięki będę próbował...
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: 20.05.2025 - 12:08