Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy takie logowanie jest bezpieczne?
Forum PHP.pl > Inne > Hydepark
arosm
Witam. Napisałem taki oto sobie system logowania i chciałem zasięgnąć opinii czy jest on w miarę bezpieczny. Mam tabelę Hasła z polami login, hasło,status (admin lub student), idsesji. Podczas logowania do tabeli zapisywany jest unikatowy Idsesji.

Plik authconfig.php
  1. <?php
  2.  
  3. function connect_DB()
  4. {
  5. mysql_connect(&#092;"xxxx\", \"xxxxxxxx\", \"xxxx\") or die (\"Nie połączono z serwerem!\");
  6. mysql_select_db(&#092;"xxxxxxxx\") or die (\"Nie wybrano bazy danych\");
  7. };
  8.  
  9. function check_ID($ID)
  10. {
  11. $sql = &#092;"SELECT login FROM hasla WHERE Idsesji='$ID'\";
  12. $result = mysql_query($sql) or die (&#092;"Nie pobrano wyników\");
  13. $num = mysql_numrows($result);
  14. return $num;
  15. };
  16.  
  17. ?>


Plik login.php
  1. <?php
  2.  
  3. include_once(&#092;"authconfig.php\");
  4. connect_DB();
  5. $sql = &#092;"SELECT login, haslo FROM hasla WHERE login='$login' AND haslo='$pass'\";
  6. $result = mysql_query($sql) or die (&#092;"Nie pobrano wyników\");
  7. $num = mysql_numrows($result);
  8. if ($num == 1) 
  9. {
  10. $string = crypt(rand());
  11. $idsesji = md5($string);
  12. $sql = &#092;"UPDATE hasla SET Idsesji = \"$idsesji\" WHERE login='$login' AND haslo='$pass'\";
  13. $sql_result = mysql_query($sql) or die (&#092;"NIE wykonano zapytania\");
  14. $stat = &#092;"Select status from hasla where login='$login' and haslo='$pass'\";
  15. $stat_result = mysql_query($stat) or die (&#092;"NIE wykonano zapytania\");
  16.  
  17. while ($row = mysql_fetch_array($stat_result)) 
  18. {
  19. $status = $row[&#092;"status\"];
  20. }
  21. if ($status == 'pracownik') {
  22. header(&#092;"Location: dziekanat/index.php?PHPSESSIONID=$idsesji\");
  23. } else if ($status == 'student') {
  24. header(&#092;"Location: student/index.php?PHPSESSIONID=$idsesji\"); };
  25. } else if ($num == &#092;"0\") 
  26. {
  27. header(&#092;"Location: indexbl.php\");
  28. };
  29.  
  30. ?>


Plik index.php
  1. <?php
  2.  
  3. include_once(&#092;"../authconfig.php\");
  4. connect_DB();
  5. $numrows = check_ID($PHPSESSIONID);
  6. if ($numrows == 1) {
  7.  echo 'ZALOGOWANY ADMIN';
  8. } else {
  9. echo 'BRAK UPRAWNIEŃ';
  10. }
  11.  
  12. ?>

i dalej w tym pliku
  1. <a href="index2.php?PHPSESSIONID=<? echo $PHPSESSIONID; ?> " >LINK DO PODSTRONY</a>



plik index2.php
  1. <?php
  2.  
  3. include_once(&#092;"../authconfig.php\");
  4. connect_DB();
  5. $numrows = check_ID($PHPSESSIONID);
  6. if ($numrows == 1) {
  7. echo ' ZALOGOWANY - ADMIN';
  8. } else {
  9. echo 'BRAK UPRAWNIEŃ';
  10. }
  11.  
  12. ?>


na tej stronie można to wypróbować.
login admina: admin hasło: dziekanat
login studenta: 1234 hasło: qwerty

Będę wdzięczny za wszelką krytykę i propozycje ulepszenia.
Marusz
Nie jest.

Wystarczy kliknac na ten adres:
http://www.uczelnia.bielsko.win.pl/dziekan...befd9a060ec6f2b

i juz sie jest zalogowanym.
Poza tym gdy zaloguje sie jako student, to wystarczy, ze zmienie w pasku przegladarki ze "/student/" na "/dziekanat/" i juz siedze w dziekanacie. Oczywiscie identyfikator sesji pozostaje bez zmian.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.