Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]MySQL]Skrypt logowania, Proszę o wyrażenie swojego zdania na ten temat .
kamillo121
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 6
Dołączył: 26.07.2009

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


Witam , napisałem sobie skrypt logowania i nie wiem czemu ale wydaje mi się, że jest strasznie cienko zabezpieczony , tzn jest to mój drugi skrypt (po próbach ) i nie spodziewam się skryptu nie do obejścia ale takiego chociaż dość dobrego , możecie zerknąć na to i dać swoją opinie ? (tylko bądźcie wyrozumiali dla mnie, proszę (IMG:style_emoticons/default/smile.gif) (wiem, że jest do tego dział ale ja bym w razie czego chciał jakąś pomoc co do tego skryptu, tzn jakieś inne sposoby czy coś ) )
  1.  
  2. <?php
  3. if(!isset($_REQUEST['action'])){
  4. header('Location: index.php?page=news');
  5. }else{
  6. switch($_REQUEST['action']){
  7. case 'Zaloguj':
  8. if(!isset($_POST['login']) OR !isset($_POST['haslo']) OR strlen($_POST['login'])<1 OR strlen($_POST['haslo'])<1){
  9. header('Location: index.php?page=news');
  10. }else{
  11. if(preg_match('/^[a-zA-Z0-9\_\-]{3,20}$/D', $_POST['login']) AND preg_match('/^[a-zA-Z0-9]{4,20}$/D', $_POST['haslo'])){
  12. include 'conn.php';
  13. $login=stripslashes($_POST['login']);
  14. $haslo=stripslashes($_POST['haslo']);
  15. /// Tutaj dodałem według wskazówek szanownych forumowiczów przepuszczanie przez sha1 hasła :)
  16. $sql="SELECT * FROM user WHERE login='".$login."' AND haslo='".$haslo."' LIMIT 1 ";
  17. $result=mysql_query($sql)
  18. unset($sql);
  19. if($row=mysql_fetch_array($result)){
  20. $_SESSION['login']=$row['login'];
  21. $_SESSION['lvl_acc']=$row['lvl_acc'];
  22. $sql="UPDATE user SET ostatnia_wiz='".date("Y-m-d H:i:s", time())."' " .
  23. "WHERE id=".$row['id']." ";
  24. echo '<div id="kom"><div id="tab">Komunikat</div>';
  25. echo 'zalogowano<br><br>';
  26. echo '<a href="index.php?page=news">Powrót na stronę głowną </a>';
  27. echo '</div>';
  28. }else{
  29. echo '<div id="kom"><div id="tab">Komunikat</div>';
  30. echo 'Złe hasło bądź login<br> ';
  31. echo '<a href="index.php?page=news">Powrót na stronę głowną </a>';
  32. echo '</div>';
  33. }
  34. }else{
  35. echo '<div id="kom"><div id="tab">Komunikat</div>';
  36. echo 'Złe dane<br> ';
  37. echo '<a href="index.php?page=news">Powrót na stronę głowną </a>';
  38. echo '</div>';
  39. }
  40. }
  41. break;
  42. case 'Wyloguj':
  43. echo '<div id="kom"><div id="tab">Komunikat</div>';
  44. echo 'Wylogowano<br>';
  45. echo '<a href="index.php?page=news">Powrót na stronę głowną </a>';
  46. echo '</div>';
  47. break;
  48. default:
  49. header('Location: index.php?page=news');
  50. break;
  51.  
  52. }
  53. //koniec switch'a
  54. }
  55. ?>


(To jest sam skrypt który otrzymuje dane z formularza, przetwarza i loguje )

Ten post edytował kamillo121 24.08.2009, 15:30:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Sól, salt czy jakkolwiek to nazwać a o czym w poprzednim poście pisałem jest stałym dodatkiem do niejawnej wersji hasła czy co tam byś chciał kodować.
Są to ciągi znaków, które się dokleja do danej usera czy to na początek, koniec lub z obu stron i dopiero przeprowadza hashowanie. W ten sposób nawet słabe hasła można uczynić mocnymi. Sprawia to także, że znając czyjeś hasło i znając funkcje jakiej użyto nie wygenerujesz tego samego hasha. A znając hash i nawet gdybyś go rozgryzł do postaci jawnej, to nie wiesz która część w ciągu znaków jest prawidłowym hasłem usera. Tyle że sha-1, md5 i wiele innych jest algorytmami szyfrującymi jednostronnymi. A więc możesz zaszyfrować, ale nie ma funkcji deszyfrującej do nich. Ważne by sól była stała, bo inaczej hashe nie będą się zgadzały. Dlatego daje się do nich kombinacje liter małych i dużych, znaków by utrudnić "złamanie" hashy przez "tęczowe tabliczki"

Ze zmiennymi sesji... mae culpa... nie interesowałem się nigdy zbytnio czy są po stronie serwera czy klienta. I tak zazwyczaj mialem wszystkie krytyczne dane w hashach (IMG:style_emoticons/default/biggrin.gif)

Co do sprawdzania to aż tak rygorystycznie nie trzeba, ale co jakiś czas można (IMG:style_emoticons/default/tongue.gif)

Gdy zaś wspominałem o przechowywaniu w sesji loginu i hasła miałem na myśli sytuację, gdy akurat login nie musi być polem jednoznacznie identyfikującym. Tak naprawdę unikatowa jest kombinacja loginu i hasła i dopiero taki warunek trzeba sprawdzać pod kątem kolizyjności w bazie. Może być wielu userów o tym samym loginie ale różnych hasłach. Jedynie z wygody ustawia się na to pole wartość unique by sobie mniej roboty robić i nie wprowadzać zamieszania dla pozostałych użytkowników :] Czyli dla wygody nas, adminów, tak naprawdę, a nie dlatego, że tak musi być (IMG:style_emoticons/default/smile.gif) Oszczędza nam to dodatkowego sprawdzenia hasła i tyle (IMG:style_emoticons/default/winksmiley.jpg) Zmiana loginu, nawet na już istniejący, po założeniu konta w takim wypadku to pikuś i użytkownik sam to może zrobić, jedynie trzeba sprawdzać unikatowość kombinacji w formularzu zmiany loginu.
Go to the top of the page
+Quote Post

Posty w temacie
- kamillo121   [PHP]MySQL]Skrypt logowania   24.08.2009, 14:41:05
- - sweter   Zabezpiecz hasło funkcją md5   24.08.2009, 14:50:18
|- - Shlizer   Login użytkownicy powinni mieć unikatowy nie ze wz...   24.08.2009, 17:11:47
- - kamillo121   A czytałem w innych tematach tutaj, że w nowych sk...   24.08.2009, 14:52:05
|- - fifi209   Cytat(kamillo121 @ 24.08.2009, 14:52...   24.08.2009, 14:55:57
- - kamillo121   Fifi209 dzięki , a takie pytanko, jak zastosuję to...   24.08.2009, 14:58:34
- - thek   Jeśli mowa o hasłach to niekoniecznie musi być sha...   24.08.2009, 15:12:20
|- - cros   Cytat(thek @ 24.08.2009, 16:12:20 ) ....   24.08.2009, 15:53:28
- - kamillo121   Czyli tak , narazie zmieniam przy rejestracji, że ...   24.08.2009, 15:16:49
- - sniffer32   Cytathasło i w sesji też je trzymał zakodowane w ...   24.08.2009, 15:20:25
- - kamillo121   No ja hasła, nigdzie nie potrzebuje , do indentyfi...   24.08.2009, 15:22:39
- - sniffer32   [PHP] pobierz, plaintext  $hashPasswd = sha1...   24.08.2009, 15:30:00
- - kamillo121   znaczy że przy haśle otrzymanym od użytkownika prz...   24.08.2009, 15:32:06
- - sniffer32   a wiesz co to są "tęczowe tablice" ?   24.08.2009, 15:33:49
- - kamillo121   NIe ale przewertowałem na szybcika google i coś w ...   24.08.2009, 15:35:59
- - sniffer32   po dodaniu soli nic nie da skopiowanie hash'u ...   24.08.2009, 15:38:46
- - kamillo121   a ta sol to może byc np : $liczby = range(1,...   24.08.2009, 15:41:52
- - sniffer32   a jak później porównasz hash z logowania z hashem ...   24.08.2009, 15:47:16
- - kamillo121   No już teraz jak spróbowałem tego użyć to już wiem...   24.08.2009, 15:48:51
- - sniffer32   Cytathaslo powinno sie przesylac juz zakodowane......   24.08.2009, 15:56:11
- - thek   Sól, salt czy jakkolwiek to nazwać a o czym w popr...   24.08.2009, 16:31:24
|- - fifi209   Cytat(thek @ 24.08.2009, 16:31:24 ) W...   24.08.2009, 17:26:05
- - kamillo121   Wiecie co ,nie żebym spamował czy coś ale z tego t...   24.08.2009, 19:47:55
- - fifi209   Napisać session handlera, masz nawet artykuł o tym...   24.08.2009, 19:50:16
- - kamillo121   Dzięki Już się wgłębiam ....   24.08.2009, 19:52:30
- - thek   Shlizer... o przypadku dla userów napisałem Cytati...   24.08.2009, 20:21:35
- - kamillo121   EEE, że znowu zmienię temat rozmowy .. Przeczytałe...   24.08.2009, 20:30:52
- - sniffer32   chyba tak: [PHP] pobierz, plaintext  $obiekt...   24.08.2009, 20:40:09
- - kamillo121   Nie mam pojęcia jak to dostosować , mam nadzieje,...   24.08.2009, 20:44:14
- - sniffer32   ale ta klasa jest pod php4, phpclasses.org , googl...   24.08.2009, 20:47:37
- - kamillo121   No trudna, dzięki za pomoc ale nie umiem ... Za tę...   24.08.2009, 20:57:25


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: 17.10.2025 - 11:16