Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][PHP]hasło generowanie

Napisany przez: dave666 14.07.2019, 14:22:25

Witam czy ktoś mógłby mi wytłumaczyć w jaki sposób jest tu pobierane hasło

  1. $prawie = http://www.php.net/md5($_POST['pass']);
  2. $pass = http://www.php.net/md5($prawie.'1m&3S');
  3. if ($old[0] == $pass) {
  4. $_SESSION['admin'] = 'ok';
  5. } else {
  6. http://www.php.net/echo"<center><font color='red'>Niepoprawne haslo sproboj ponownie</font>";
  7. }


chce się dowiedzieć co ta linijka robi
  1. $pass = http://www.php.net/md5($prawie.'1m&3S');

Napisany przez: dublinka 14.07.2019, 14:31:11

To po kropce to tzw "sól" dodaje sie to do zwiekszenia bezpieczenstwa choc juz dawno md5() przestalo byc bezpieczne i powinno sie stosowac chocby password_hash().
Sól to tylko tobie znany coag znakow. Mozna dodac to np na poczatku lub koncu hasla.

Napisany przez: dave666 14.07.2019, 14:36:41

Czyli najpierw jest generowane hasło w md5 a później jest dodawana ta sól i jeszcze raz generowana i jest właściwe hasło ?

Jedak nie czy możesz mi to wytłumaczyć ? będę wdzięczny


trochę pokombinowałem i nie wiem czy dobrze myślę

  1. <?php
  2. $has = "1234";
  3. $prawie = http://www.php.net/md5($has);
  4. $pass = http://www.php.net/md5($prawie.'1m&3S');
  5. http://www.php.net/echo $pass;


Czyli najpierw $has jest zamieniany na md5 to po kropce zamieniane tez na md5 i dopiero łączone czy źle rozumiem

Napisany przez: viking 14.07.2019, 15:14:40

Nie. Do pierwotnego ciągu coś doklejasz. Natomiast jeszcze raz. Md5 od dawna się nie używa i nie ma sensu się przy tym upierać. Użyj co najmniej bcrypt.

Napisany przez: dublinka 15.07.2019, 07:41:53

Cytat(dave666 @ 14.07.2019, 14:36:41 ) *
Czyli najpierw jest generowane hasło w md5 a później jest dodawana ta sól i jeszcze raz generowana i jest właściwe hasło ?

Jedak nie czy możesz mi to wytłumaczyć ? będę wdzięczny


trochę pokombinowałem i nie wiem czy dobrze myślę

  1. <?php
  2. $has = "1234";
  3. $prawie = http://www.php.net/md5($has);
  4. $pass = http://www.php.net/md5($prawie.'1m&3S');
  5. http://www.php.net/echo $pass;


Czyli najpierw $has jest zamieniany na md5 to po kropce zamieniane tez na md5 i dopiero łączone czy źle rozumiem

W tamtym przykladzie (w tym tez) jest przekombinowane bo 2x haslo jest mieszane.
Najpierw haslo jest mieszane a potem znowu mieszane ( to juz zamieszane za pierwszym razem) z solą.


Możesz zrobić np tak:

  1. <?php
  2. $logins = http://www.php.net/array(
  3. 'user' => http://www.php.net/array('hash' => 'ae092...', 'salt' => 'a7#(ad~I$...'),
  4. );
  5.  
  6.  
  7. $user = http://www.php.net/strtolower(http://www.php.net/trim($_POST['user']));
  8. $pass = $_POST['password'];
  9.  
  10. if(http://www.php.net/isset($logins[$user]) && http://www.php.net/crypt($logins[$user]['salt'].$pass, 'SHA-256') == $logins[$user]['hash']) {
  11. // login poprawny
  12. } else {
  13.  
  14. http://www.php.net/exit('blad');
  15.  
  16. }
  17.  

Napisany przez: Pyton_000 15.07.2019, 09:41:15

Nie używamy crypt() do haseł tylko password_hash()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)