Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Hashowanie haseł - pytanie
Loped
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Witam. Możecie mi powiedzieć czy taki sposób hashowania haseł jest poprawny i bezpieczny? Nie wiem czy jest to dobra metoda, ale wydaje mi się w pewien sposób bezpieczniejsza od użycia samego sha1(). (IMG:style_emoticons/default/wink.gif)

  1.  
  2. $char='ZsE$lOpQ(';
  3. $example="hasło";
  4.  
  5. if(sha1($_POST['haslo'].$char)==sha1($example.$char)
  6. {
  7. echo'hasło poprawne';
  8. }
  9. else
  10. {
  11. echo"złe hasło";
  12. }
  13.  


Ten post edytował Loped 11.03.2012, 15:13:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Zabieg taki nazywamy soleniem hasła i ma on służyć zwiększeniu bezpieczeństwa skryptu. Natomiast w takim zastosowaniu, jak nam to pokazałeś, mija się z celem (chyba, że to tylko przykład) - jeśli padnie serwer i interpreter PHP, albo dostęp do plików nie będzie odpowiednio zabezpieczony, to potencjalny włamywacz ma zarówno hasło, jak i sól podane jak na dłoni.
Go to the top of the page
+Quote Post
Loped
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Mam zamiar zrobić dodatkowe pole i w nim przechowywać losową sól. Każdy użytkownik będzie miał swój unikalny kod. Myślę, że taki sposób będzie odpowiedni (IMG:style_emoticons/default/wink.gif) .
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(Loped @ 11.03.2012, 17:13:50 ) *
Mam zamiar zrobić dodatkowe pole i w nim przechowywać losową sól.

Soli nie przechowujesz/przesyłasz w formularzu rejestracji czy logowania, a np. w bazie danych. Natomiast tworzysz ją w momencie rejestrowania nowego konta.

PS: Tak naprawdę nikt poza administratorem bazy danych, czy też systemu nie powinien móc widzieć jak ta sól wygląda, a użytkownik nawet nie musi mieć świadomości tego, że jego hałso podlega soleniu.

Ten post edytował mortus 11.03.2012, 17:18:38
Go to the top of the page
+Quote Post
Loped
post
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Cytat(mortus @ 11.03.2012, 17:16:15 ) *
Soli nie przechowujesz/przesyłasz w formularzu rejestracji czy logowania, a np. w bazie danych. Natomiast tworzysz ją w momencie rejestrowania nowego konta.

PS: Tak naprawdę nikt poza administratorem bazy danych, czy też systemu nie powinien móc widzieć jak ta sól wygląda, a użytkownik nawet nie musi mieć świadomości tego, że jego hałso podlega soleniu.


Nie za bardzo rozumiem. W takim razie gdzie mam przechowywać tą sól, jak nie w bazie danych? (IMG:style_emoticons/default/wink.gif) W czasie rejestracji użytkownika algorytm wylosuje sól i następnie zapisze w bazie. Podczas logowania pobierze sól z bazy. Czy może idę złym tokiem myślenia?
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(Loped @ 11.03.2012, 17:37:53 ) *
Nie za bardzo rozumiem. W takim razie gdzie mam przechowywać tą sól, jak nie w bazie danych? (IMG:style_emoticons/default/wink.gif) W czasie rejestracji użytkownika algorytm wylosuje sól i następnie zapisze w bazie. Podczas logowania pobierze sól z bazy. Czy może idę złym tokiem myślenia?

Dokładnie tak ma to wygladać. Źle zrozumiałem słowo "pole", bo chodziło Ci o kolumnę w tabeli użytkowników w bazie danych, a ja pomyślałem o polu formularza.
Mamy podobny, ale jednak trochę inny "tok myślenia" (IMG:style_emoticons/default/smile.gif)

Ten post edytował mortus 11.03.2012, 17:43:12
Go to the top of the page
+Quote Post
Loped
post
Post #7





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Cytat(mortus @ 11.03.2012, 17:41:51 ) *
Dokładnie tak ma to wygladać. Źle zrozumiałem słowo "pole", bo chodziło Ci o kolumnę w tabeli użytkowników w bazie danych, a ja pomyślałem o polu formularza.
Mamy podobny, ale jednak trochę inny "tok myślenia" (IMG:style_emoticons/default/smile.gif)


Literówka (IMG:style_emoticons/default/wink.gif) . Zastanawiam się tylko, czy przechowywać sól w nowej tabeli, czy w tej samej gdzie inne dane(hasła, loginy itp).
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Można w tej samej, zresztą nie ma sensu tworzyć dodatkowej tabeli tylko po to, żeby przechowywać w niej jedną kolumnę unikalnych danych. W każdym bądź razie przechowywanie soli w innej tabeli nie zwiększy bezpieczeństwa aplikacji.

PS: Jeśli danych użytkownika może być więcej, to można je trzymać w dwóch różnych tabelach, przy czym ja np. w tabeli users przechowywałbym dane niezbędne do autentykacji, a w tabeli personal_data dane personalne jak imię, nazwisko, itp..

Ten post edytował mortus 11.03.2012, 17:59:34
Go to the top of the page
+Quote Post
lobopol
post
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Dodatkowego pola na sól nie musisz tworzyć możesz zrobić je na zasadzie np. co któraś litera loginu jako md5 dzielona na 2 części i dopisana do początku i końca hasła i zahashowane sha1 albo jakaś wariacja tego
Go to the top of the page
+Quote Post
Loped
post
Post #10





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Cytat(lobopol @ 11.03.2012, 18:02:57 ) *
Dodatkowego pola na sól nie musisz tworzyć możesz zrobić je na zasadzie np. co któraś litera loginu jako md5 dzielona na 2 części i dopisana do początku i końca hasła i zahashowane sha1 albo jakaś wariacja tego


Gorzej jak użytkownik będzie chciał zmienić login, wtedy zmiane loginu będzie trzeba potwierdzić hasłem, by zrobić jego update (IMG:style_emoticons/default/wink.gif) .

Dzięki wielkie za odpowiedź (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
lobopol
post
Post #11





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


I tak takie zmiany powinno się potwierdzać hasłem, jak właściwie wszystkie ważniejsze ustawienia profilowe.
Go to the top of the page
+Quote Post
Crozin
post
Post #12





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Masz przyklejony wątek dot. hashowania haseł, dlaczego z niego nie skorzystasz?

Przede wszystkim nie powinieneś korzystać z SHA1:
1. Jest on dosyć szybkim algorytmem, a to przy hashowaniu haseł cecha niepożądana.
2. Został on złamany. Nie jest on może tak beznadziejny jak MD5, ale nadal pozostaje złamanym.

Zmiana algorytmu jest banalnie prosta (hash) więc nie ma powodów by korzystać z SHA1.

@mortus: Sól nie jest czymś co musi być jakoś specjalnie ukrywane - jej "tajność" nie wpływa w żaden sposób na poprawę bezpieczeństwa.
Go to the top of the page
+Quote Post
lobopol
post
Post #13





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Crozin zainteresowałeś mnie, w jakim czasie można złamać zasolone hasło w sha1? Znając jak i nie znając sól.
Go to the top of the page
+Quote Post
Crozin
post
Post #14





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@lolopol: Sól nie ma za wiele do czynienia przy szukaniu kolizji dla danego algorytmu. Dla SHA1 wygenerowanie kolizji jest nadal dosyć trudne - nadal raczej zdecydowanie poza zasięgiem przeciętnego PC-ta - ale podobnie jak w przypadku MD5, w ciągu kilku lat może zmienić się z teoretycznego w kilkuminutowy proces.

Generalnie SHA1 nie jest algorytmem wartym rozpatrzenia przy wrażliwych informacjach, szczególnie w przypadku gdy zmiana na lepszy jest tak prosta.

Ten post edytował Crozin 11.03.2012, 23:02:08
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: 22.08.2025 - 13:05