Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Bezpieczne logowanie - lae czy naprawdę takie bezpieczne ?!
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


A więc dzisiaj miałem sporo wolnego czasu więc postanowiłem ze tym razem napiszę cos pożytecznego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Zajrzałem na maila i .... jest tam zlecenie dla mnie na logowanie do wewnętrznej sieci firmowej.

Wymagania jakie postawiono to:

- Oparte na plikach
- Hasła nie mągą być jawnie zapisane w pliku
- Proste do integracji z resztą oskryptowania

Wymyśliłem coś takiego:

register.php
  1. <?
  2. $login = $_POST['login'];
  3. $haslo = $_POST['pwd'];
  4. $haslo2 = $_POST['pwd2'];
  5.  
  6. if(isset($_POST['login']) && isset($_POST['pwd']))
  7. {
  8.  if (file_exists('./user/'.$login.'.php'))
  9. {
  10.  echo 'Taki login juz istnieje !<br>Wróć i wybierz inny';
  11. }
  12. else
  13. {
  14.  $nr = rand (99, 999);
  15.  $haslod = $haslo;
  16.  $haslod .= $nr;
  17.  
  18.  echo $haslod;
  19.  
  20.  $haslo .= "$nr";
  21.  $md5 = md5($haslod);
  22.  $crc32 = crc32($haslod);
  23.  $sha1 = sha1($haslod);
  24.  
  25.  $file = './user/'."$login".'.php'; 
  26.  $fp = fopen($file, "a"); 
  27.  flock($fp, 2); 
  28.  fwrite($fp, '<?'."n");
  29.  fwrite($fp, '$md5 = ''."$md5".'';'."n"); 
  30.  fwrite($fp, '$crc32 = ''."$crc32".'';'."n"); 
  31.  fwrite($fp, '$sha1 = ''."$sha1".'';'."n"); 
  32.  fwrite($fp, '$numer = ''."$nr".'';'."n"); 
  33.  fwrite($fp, '?>'."n");
  34.  flock($fp, 3); 
  35.  fclose($fp);
  36. }
  37.  
  38. }
  39. else
  40. {
  41.  echo '<html><head><meta http-equiv="Content-Language" content="pl">';
  42.  echo '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">';
  43.  echo '<title>Rejestracja :: Demo</title></head><body>';
  44.  echo '<form method="POST" action="./register.php">';
  45.  echo '<p>Login <input type="text" name="login" size="20"></p>';
  46.  echo '<p>Hasło <input type="password" name="pwd" size="20"></p>';
  47.  echo '<p>Hasło <input type="password" name="pwd2" size="20"> (Przepisz powyższe jeszce raz)</p>';
  48.  echo '<p><input type="submit" value="Rejstruj"></p>';
  49.  echo '</form></form></body></html>';
  50. }
  51. ?>




login.php
  1. <?
  2. if (isset($_POST['login']) && isset($_POST['pwd'])) 
  3. {
  4.  $login = $_POST['login'];
  5.  $pwdzp = $_POST['pwd'];
  6.  if (file_exists('./user/'.$login.'.php'))
  7.  {
  8.  include './user/'."$login".'.php';
  9.  $hdw = "$pwdzp";
  10.  $hdw .= $numer;
  11.  if(md5($hdw) == $md5 && crc32($hdw) == $crc32 && sha1($hdw) == $sha1)
  12.  {
  13. echo 'OK';
  14.  }
  15.  else
  16.  {
  17. echo 'ZLE HASLO !';
  18.  }
  19.  }
  20.  else
  21.  {
  22.  echo 'Bledny login !';
  23.  }
  24. }
  25. else
  26. {
  27.  echo '<html><head><meta http-equiv="Content-Language" content="pl">';
  28.  echo '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">';
  29.  echo '<title>Logowanie :: Demo</title></head><body>';
  30.  echo '<form method="POST" action="./login.php">';
  31.  echo '<p>Login <input type="text" name="login" size="20"></p>';
  32.  echo '<p>Hasło <input type="password" name="pwd" size="20"></p>';
  33.  echo '<p><input type="submit" value="Zaloguj"></p>';
  34.  echo '</form></form></body></html>';
  35. }
  36. ?>



Oparte na 3 sumach kontrolnych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Drugim utrudnieniem jest to że sumy nie są tworzone od hasła ale od hasła i 2-3 cyfrowej liczby (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Nawet jak ktoś zdobędzie jakos hash to i tak sie nie zaloguje nawet jak go rozkoduje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Napewno wielu zmyli zmienna $numer, kazdy normlany pomyśli że to numer usera w systmie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


Co o tym myślicie ? Nadaje się ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.09.2025 - 17:30