Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [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ę 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
sweter
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Zabezpiecz hasło funkcją md5


--------------------
Go to the top of the page
+Quote Post
kamillo121
post
Post #3





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

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


A czytałem w innych tematach tutaj, że w nowych skryptach tego się już raczej nie stosuje , ktoś to tak napisał, (jak znajde to podam link)


Ten post edytował kamillo121 24.08.2009, 14:55:00
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(kamillo121 @ 24.08.2009, 14:52:05 ) *
A czytałem w innych tematach tutaj, że w nowych skryptach tego się już raczej nie stosuje , ktoś to tak napisał, (jak znajde to podam link)


Przecież tam mowa o braku filtracji loginu...

Co hasła bezpieczniejsze jest sha1


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kamillo121
post
Post #5





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

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


Fifi209 dzięki , a takie pytanko, jak zastosuję to przy haśle to czy będzie w miarę bezpieczny ? czy jeszcze gdzieś są "dziecinne luki" ? (tylko błagam, nie odsyłaj mnie do tematu w php o bezpieczeństwie bo go czytałem )

Ten post edytował kamillo121 24.08.2009, 14:59:08
Go to the top of the page
+Quote Post
thek
post
Post #6





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




Jeśli mowa o hasłach to niekoniecznie musi być sha-1. Może być md5... byle miało salt smile.gif Bez tego md5 mozna "wykoleić" używając "rainbow tables". Najbezpieczniej by było, gdybyś przy rejestracji do bazy wrzucił już zakodowane hasło i w sesji też je trzymał zakodowane. Porównać zawsze z bazą możesz wtedy i nie leci ono w postaci jawnej nigdzie. A sesje część danych przesyłają między stronami poprzez cookies. Jeśli znajdzie się tam też hasło w postaci jawnej to masz wtedy poważną lukę w bezpieczeństwie.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
kamillo121
post
Post #7





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

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


Czyli tak , narazie zmieniam przy rejestracji, że by wrzucało do bazy hasło przepuszczone przez sh1 , przy logowaniu zmieniam, żeby porównało hasło przepuszczone przez sh1 od formularza z tym z bazy , a teraz pytanie do ciasteczek ..... Na stronie nie potrzebny mi będzie dużo danych o użytkowniku które muszę często porównywać , jest to tylko login i lvl_acc , więc jest sens to pakować w ciasteczka ?
Go to the top of the page
+Quote Post
Quantum
post
Post #8





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


Cytat
hasło i w sesji też je trzymał zakodowane


w jakim celu ma trzymać hasło w sesji ? smile.gif login w zupełności wystarczy.

Ten post edytował sniffer32 24.08.2009, 15:22:00
Go to the top of the page
+Quote Post
kamillo121
post
Post #9





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

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


No ja hasła, nigdzie nie potrzebuje , do indentyfikacji tylko potrzebuje loginu i lvl_acc , tylko ja jakoś nie chce się za bardzo w ciasteczka bawić ...
Myślę , że same sesje wystarczą nie ?
I powie ktoś wreście czy skrypt może być dość bezpieczny ? tylko teraz mam przepuszczane przez sha1 haslo jeszcze smile.gif
Odpowiedzcie proszę i daje Wam spokój haha.gif

Ten post edytował kamillo121 24.08.2009, 15:30:37
Go to the top of the page
+Quote Post
Quantum
post
Post #10





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1.  
  2. $hashPasswd = sha1($password.'tu wpisz co chcesz...');
  3.  


przy rejestracji i logowaniu, tak zwana "sól".
Go to the top of the page
+Quote Post
kamillo121
post
Post #11





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

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


znaczy że przy haśle otrzymanym od użytkownika przy funkcji sha1 mam coś swojego jeszcze wpisać ?
A mógłbyś wytłumaczyć po co to ?
Go to the top of the page
+Quote Post
Quantum
post
Post #12





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


a wiesz co to są "tęczowe tablice" ? smile.gif
Go to the top of the page
+Quote Post
kamillo121
post
Post #13





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

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


NIe ale przewertowałem na szybcika google i coś w stylu do odgadywania haseł w md5, sha1 idt ?



Ten post edytował kamillo121 24.08.2009, 15:42:08
Go to the top of the page
+Quote Post
Quantum
post
Post #14





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


po dodaniu soli nic nie da skopiowanie hash'u z bazy i wklejenie go do wyszukiwarki winksmiley.jpg
Go to the top of the page
+Quote Post
kamillo121
post
Post #15





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

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


a ta sol to może byc np :
$liczby = range(1,24);
$klucze = array_rand($liczby, 6);
I klucze wstawić za sól ?
Tylko że to w tablicy to potem tylko bym wstawił np klucze[1] za sól i tyle

Dzięki wszystkim , wiem, że pomoc udzielana mi to istna katorga ale kto pyta nie błądzi (to samo z używaniem google haha.gif) ..
Dzięki wielkei.. ( a jednak chyba nie może być losowa liczba bo wtedy nie porówna sad.gif )

Ten post edytował kamillo121 24.08.2009, 15:47:38
Go to the top of the page
+Quote Post
Quantum
post
Post #16





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


a jak później porównasz hash z logowania z hashem z bazy ? tongue.gif sól musi być stała..
Go to the top of the page
+Quote Post
kamillo121
post
Post #17





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

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


No już teraz jak spróbowałem tego użyć to już wiem, że sie nie da haha.gif ...
Dzięki smile.gif

Ten post edytował kamillo121 24.08.2009, 15:49:16
Go to the top of the page
+Quote Post
cros
post
Post #18





Grupa: Zarejestrowani
Postów: 164
Pomógł: 21
Dołączył: 21.08.2009

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


Cytat(thek @ 24.08.2009, 16:12:20 ) *
... A sesje część danych przesyłają między stronami poprzez cookies...


Ciastka przechowuja tylko nazwe sesji, nic wiecej, ale i tak haslo powinno sie przesylac juz zakodowane...
Go to the top of the page
+Quote Post
Quantum
post
Post #19





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


Cytat
haslo powinno sie przesylac juz zakodowane...


chcesz co przeładowanie sprawdzać w bazie czy wszystko się zgadza? biggrin.gif
Go to the top of the page
+Quote Post
thek
post
Post #20





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 biggrin.gif

Co do sprawdzania to aż tak rygorystycznie nie trzeba, ale co jakiś czas można 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ć smile.gif Oszczędza nam to dodatkowego sprawdzenia hasła i tyle 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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 20.08.2025 - 08:39