Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]problem z skryptem logowania
Forum PHP.pl > Forum > Przedszkole
Th0e
Witam. Mam problem z skryptem - którego stosowałem od dawna i nigdy nie było problemów.

  1. <?php ob_start();
  2. include("config.php");
  3.  
  4. $nick = $_POST['nick'];
  5. $haslo = $_POST['haslo'];
  6. $nick = addslashes($nick);
  7. $nick = htmlspecialchars($nick);
  8.  
  9. if ($_GET['nick'] != '') { //jezeli ktos przez adres probuje kombinowac
  10. }
  11. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  12. }
  13.  
  14.  
  15. if (!$nick OR empty($nick)) {
  16.  
  17. echo 'Wypełnij pole z loginem!';
  18.  
  19. }
  20. if (!$haslo OR empty($haslo)) {
  21.  
  22. echo 'Wypełnij pole z hasłem!';
  23.  
  24. }
  25. $istnick = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '$nick' AND `haslo` = '$haslo'")); // sprawdzenie czy istnieje uzytkownik o takim nicku i hasle
  26. if(empty($istnick)) {
  27. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  28. } else {
  29. $_SESSION['nick'] = $nick;
  30.  
  31. header("Location: index.php");
  32. }
  33. ?>


Problem w tym że zawsze stwierdza że $istnick ma jakąś zawartość i wykonuje else - czyli przenosi na index.php Tyle że na index.php gdzie wyświetla powitanie i nick zalogowanego to nicku nie ma.

//edit: rozwiązałem swój problem - zamiast count (*) dałem zaraz po select samo * i działa. Ale prosiłbym o opinie czy powyższy skrypt jest bezpieczny na atak SQL
sajegib
Przefiltrować zmienną:

  1. $haslo
mmmmmmm
Nie jest bezpieczny. W haśle może przekazać np. DROP-a. Poza tym, kto na żywca ciąnie hasło? Potrakuj je md5
Michael2318
Ja na nick dalbym regexp'a w stylu A-Za-z0-9, inne znaki są zbędne i tak.
Co do hasła to tak jak poprzednicy napisali - po pierwsze teraz można wykonać na to sqli, a po drugie hasło należy potraktować jakimś hashem.
Co do hashu to md5 nie polecam bo ma ogromne bazy danych w sieci i sporo haseł Ci google podrzuci, wystarczy wklepać hash, więc użyłbym chociażby sha1, który działa tak samo tyle że koduje hasło na ciąg 40-bitowy.
A najlepiej to po prostu do hashu dorzucić sól wink.gif
artuross
Myslalem, ze sha1 juz tez zlamali smile.gif

Najlepiej uzyc bcrypta lub sha512 i ewentualnie uciac string w pewnym miejscu, tak zeby mial charakterystyczna dlugosc, np. 40 znakow, jesli calkowita dlugosc to zbyt wiele miejsca (mowie tutaj o malych serwisach). A jak sie doda sol to bcrypta ani 512 nikt nie zlamie smile.gif
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.