Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Bez[ieczny formularz logowania
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Zdaję sobie sprawę że dużo już takich tematów było, jednak interesuje mnie Wasza opinia na temat kodu mojego autorstwa, czy jest to w pełni bezpieczne, co należałoby poprawić w tej kewsti oraz w optymalnym działaniu.

  1. <?php
  2.  
  3.  
  4. // zabezpieczenie danych odebranych z $_POST
  5. function zgp($danezget){return htmlspecialchars(strip_tags(trim(stripslashes($danezget))));}
  6. // zabezpieczenie danych wysyłanych do bazy
  7. function wds($zrodlo){return htmlspecialchars(mysql_real_escape_string(trim($zrodlo)));}
  8.  
  9. // odbieranie i sprawdzenie danych z formularza $_POST
  10. if (isset($_POST['signin'])){
  11.  
  12. if (isset($_POST['login']) && isset($_POST['password'])){ //sprawdzenie czy login i hasło zostało przesłane
  13.  
  14. $login = zgp($_POST['login']); //oczyszczenie funkcją
  15. $password = $_POST['password'];
  16.  
  17. //sprawdzanie loginu
  18. $loginnotallowed = array( 'admin', 'administrator', 'admini', 'root', 'reboot', 'poweroff', ' ');
  19. if(in_array($login, $loginnotallowed)) {$error=1; echo 'Wybrany login jest zablokowany.';} //porównanie loginu z listy zablokowanej
  20. if (empty($login)) {$error=1; echo 'Wypełnij pole login.';} //sprawdza czy pole jest puste
  21. if(!preg_match("/[a-z0-9_]/",$login)){$error=1; echo 'Wpisałeś niedozwolone znaki';} // tylko małe litery i liczby oraz dolny myślink
  22. if(preg_match("/[A-Z]/",$login)){$error=1; echo 'Tylko małe litery.';} // błąd w przypadku wpisania dużych liter
  23. if(preg_match("/[\s\r\n]/",$login)){$error=1; echo 'Login nie może zawierać spacji.';} //błąd w przypadku użycia spacji
  24.  
  25. //sprawdzanie hasła
  26. if (empty($password)) {$error=1; echo 'Wypełnij pole hasło.';} //sprawdza czy pole jest puste
  27. echo '<br />';var_dump ($error);echo '<br />';echo $error;
  28.  
  29. if (!$error){// jeśli zadny z powyrzszych ifów nie zwrócił błedu $error = 1;
  30.  
  31. require_once('connect.php'); //połaczenie z bazą
  32.  
  33. $login = wds($_POST['login']); //oczyszczenie funkcją wysyłającą do bazy
  34. $password = md5($_POST['password']); //kodowanie md5
  35.  
  36. $sprawdzlogin = mysql_query("SELECT id, login, password FROM userlogin WHERE login = '$login' AND password = '$password' LIMIT 1");
  37. $wyniksprawdz = mysql_num_rows($sprawdzlogin); //sprawdzanie loginu i hasła
  38.  
  39. if(!$wyniksprawdz){//sprawdzanie wynikiu odebranego z bazy
  40. $errordb=1; echo 'nieprawidłowy login lub hasło';
  41. }
  42.  
  43. if(!$errordb){echo '!logowanie';}
  44.  
  45.  
  46.  
  47. }
  48.  
  49. }//koniec sprawdzania danych login - hasło
  50.  
  51. }//koniec sprawdzania danych


Ten post edytował !*! 13.07.2010, 13:00:56


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post

Posty w temacie
- !*!   [MySQL][PHP] Bez[ieczny formularz logowania   13.07.2010, 12:44:15
- - mac_fly   Wygląda ok, ale możesz "posolić" hasła d...   13.07.2010, 13:17:03
- - !*!   A i jeszcze czy mógłbyś/moglibyście mi powiedzieć ...   13.07.2010, 13:20:29
- - mac_fly   Obie są poprawne, a dla testu możesz napisać taki ...   13.07.2010, 13:36:03
- - iVorIus   [PHP] pobierz, plaintext $login = zgp($_POST...   13.07.2010, 13:38:39
- - !*!   Ponieważ to co jest przesyłane do bazy i tak jest ...   13.07.2010, 13:50:41
- - mac_fly   Poczytaj o sql injection, a dowiesz się dlaczego p...   13.07.2010, 14:02:51
|- - Wicepsik   Cytat(mac_fly @ 13.07.2010, 15:02:51 ...   13.07.2010, 19:42:11
- - !*!   fakt racja, przefiltruję to przy pierwszym sprawdz...   13.07.2010, 14:15:32
- - siurek22   kolejny blad ;] przeslij sobie arraya i zobaczysz ...   13.07.2010, 19:39:04
- - siurek22   nie wiem czy wiecie ale gdy przesle sie do md5() i...   13.07.2010, 19:50:29
|- - !*!   Cytat(siurek22 @ 13.07.2010, 20:50:29...   19.07.2010, 19:59:40
- - !*!   To czym i jak to przefiltrować? Przecież nie dam o...   13.07.2010, 21:50:32
- - siurek22   na sam poczatek daj is_array() jezeli nie jest to ...   13.07.2010, 22:05:16
- - siurek22   typowe podejscie informatyka lepiej wyciszyc niz w...   20.07.2010, 07:15:41
- - !*!   Poprawiłem to według wskazówek. [PHP] pobierz, pl...   20.07.2010, 09:57:40
- - darko   Do komunikacji z bazą użyłbym PDO i zapytań preint...   20.07.2010, 10:04:54
- - !*!   Tak, sprawdzam długość loginu i hasła nawet po str...   20.07.2010, 19:30:28


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 Aktualny czas: 21.08.2025 - 11:04