Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Bezpieczne logowanie - lae czy naprawdę takie bezpieczne ?!
kiler129
post 21.04.2007, 21:13:09
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 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 winksmiley.jpg
Drugim utrudnieniem jest to że sumy nie są tworzone od hasła ale od hasła i 2-3 cyfrowej liczby biggrin.gif
Nawet jak ktoś zdobędzie jakos hash to i tak sie nie zaloguje nawet jak go rozkoduje winksmiley.jpg
Napewno wielu zmyli zmienna $numer, kazdy normlany pomyśli że to numer usera w systmie tongue.gif


Co o tym myślicie ? Nadaje się ?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Sedziwoj
post 21.04.2007, 21:50:58
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


W register.php masz
  1. <?php
  2. $login = $_POST['login'];
  3. ?>

a gdzie sprawdzenie czy istnieje? Gdzie sprawdzasz co zawiera?
To tyczy się wszystkiego co dostajesz, $_POST można bez trudu sfabrykować.

EDIT lit.

Ten post edytował Sedziwoj 21.04.2007, 21:51:20


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
kiler129
post 21.04.2007, 21:58:07
Post #3





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

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


To jak proponujesz to weryfikować ?
Wystarczy zostwaic tylko litery ?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
bełdzio
post 22.04.2007, 11:21:20
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


Cytat(kiler129 @ 21.04.2007, 22:58:07 ) *
To jak proponujesz to weryfikować ?
Wystarczy zostwaic tylko litery ?

dla loginu tak, dla hasła nie


--------------------
Go to the top of the page
+Quote Post
kiler129
post 22.04.2007, 11:50:57
Post #5





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

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


tak ale przeciez mozna by miec login ktos123 iwc to tez nie to.

Jest jakas gotowa klasa ?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
woolf864
post 22.04.2007, 12:08:55
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 10.12.2006

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


  1. <?php
  2. $login = preg_replace("/([^sa-zA-Z0-9])/", "", $login);
  3. $pass = preg_replace("/([^sa-zA-Z0-9])/", "", $pass);
  4. ?>


użytkownikowi w loginie i haśle są potrzebne jedynie litery cyfry i puste znaki...
znaki specjalne są mu całkowicie niepotrzebne...
więc myśle że coś takiego będzie w sam raz winksmiley.jpg
Go to the top of the page
+Quote Post
xmenmax
post 6.12.2010, 19:29:44
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 6.12.2010

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


fajny skrypt party.gif może mi ktoś jeszcze powiedzieć jak zrobić tak jak na stronach że pisze że jesteś zalogowany i jest więcej funkcji questionmark.gif
Go to the top of the page
+Quote Post
ADeM
post 6.12.2010, 19:41:39
Post #8





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Poszytaj o sesjach.


--------------------
Go to the top of the page
+Quote Post
xmenmax
post 6.12.2010, 19:44:53
Post #9





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 6.12.2010

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


jakich sesjach ? blinksmiley.gif
Go to the top of the page
+Quote Post
ADeM
post 6.12.2010, 19:48:42
Post #10





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


http://php.net/manual/pl/features.sessions.php
http://www.google.pl/search?hl=pl&sour...q=&gs_rfai=


--------------------
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: 25.04.2024 - 01:19