Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]problem z skryptem logowania
Th0e
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 16.09.2012

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


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

Ten post edytował Th0e 2.04.2013, 18:40:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


Przefiltrować zmienną:

  1. $haslo
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Nie jest bezpieczny. W haśle może przekazać np. DROP-a. Poza tym, kto na żywca ciąnie hasło? Potrakuj je md5
Go to the top of the page
+Quote Post
Michael2318
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
artuross
post
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


Myslalem, ze sha1 juz tez zlamali (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 24.12.2025 - 23:00