Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]salt jako hasło?
robos85
post 27.08.2008, 15:19:31
Post #1





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


mam pytanie, w bazie danych zapisuję hasło użytkownika. hashuję hasło z forma tylko md5 i zapisuję do bazy.
Czytałem o saltach, lecz czy do tego celu trzeba to robić? Czy wystarczy md5?
Czy np zmieszać datę rejestracji w md5 z hasłem i to md5? - taki przykład
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
kipero
post 27.08.2008, 15:32:17
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

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


Sól ma za zadanie utrudnienie odczytania hasła za pomocą tablic tęczowych czy też brute force'a. Data rejestracji nie jest chyba złym pomysłem, ale później przy logowaniu musiałbyś najpierw odczytać datę rejestracji, "dołożyć" ją do przesyłanego hasła i dopiero porównać hashe. IMHO sam md5 wystarcza jeżeli wymagasz konkretnej długości hasła, np. min. 6 znaków.


--------------------
Go to the top of the page
+Quote Post
skowron-line
post 27.08.2008, 15:35:01
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Moim zdaniem min 6 znaków literki i cyferki powinny wystarczyć a także czy w haśle nie zawiera sie login.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
barthpl
post 27.08.2008, 15:46:26
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Oczywiście zgodzę się że warto sprawdzać czy hasło nie jest za krótkie, ma kilka literek i nie zawiera w sobie loginu czy innych danych użytkownika (imie, nazwisko, data, etc). Polecam też wzbogacić md5. Ja na przykład korzystam z takiej funkcji:
  1. <?php
  2. // Maskowanie hasła użytkownika. Skrót hasła składa się ze 128 znaków alfanumerycz
    nych.
  3. function hashPassword( $pass )
  4. {
  5. $prefix = sha1( md5(time()).$pass );
  6. $suffix = sha1( md5($pass.time()) );
  7. $suffix .= substr( md5($suffix), -);
  8. return $prefix.sha1($prefix.$pass.$suffix).$suffix;
  9. }
  10. // Sprawdzanie poprawności hasła. Gdzie $user to skrót hasła zapisany w bazie danych
  11. // natomiast $pass to wartość podana przez użytkownika w formularzu logowania.
  12. function verifiePassword( $user, $pass )
  13. {
  14. $prefix = substr( $user, 0, 40 );
  15. $suffix = substr( $user, 80, 48 );
  16. $password = $prefix.sha1($prefix.$pass.$suffix).$suffix;
  17.  
  18. return strcmp( $user, $password ) == 0;
  19. }
  20. ?>

Dzięki temu to samo hasło zawsze ma inny skrót a dzięki temu jego przechowywanie staje się bezpieczniejsze.


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
robos85
post 27.08.2008, 16:12:30
Post #5





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


moje hasło ma min 6 znaków, max 40. Nie ma sprawdzenia innego.
barth czyli w zapisie do bazy daję insert...... i dla pola password: hashPassword($_POST['pass'] - przykład.
i w autoryzacji: pobieram z bazy dane i daję w ifa (verifiePassword(wart_z_bazy,$_POST['pass']) ...


Takie użycie tego jest ?

aha, i pole hasła ma 128 znaki tak? Bo w bazie jak coś ograniczę pole pass też:)

Ten post edytował robos85 27.08.2008, 16:13:10
Go to the top of the page
+Quote Post
barthpl
post 27.08.2008, 16:21:34
Post #6





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Cytat(robos85 @ 27.08.2008, 17:12:30 ) *
barth czyli w zapisie do bazy daję insert...... i dla pola password: hashPassword($_POST['pass'] - przykład.
i w autoryzacji: pobieram z bazy dane i daję w ifa (verifiePassword(wart_z_bazy,$_POST['pass']) ...
Takie użycie tego jest ?

Dokładnie tak.

Cytat(robos85 @ 27.08.2008, 17:12:30 ) *
aha, i pole hasła ma 128 znaki tak? Bo w bazie jak coś ograniczę pole pass teżsmile.gif

Tak. 40 znaków od prefiksu, 40 znaków od magicznego skrótu (prefiks, hasło, sufiks) i 48 od sufiksu. Łącznie 128. Może być to zapisane na przykład w varchar(128).


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
robos85
post 27.08.2008, 16:24:35
Post #7





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


OK, dzięki.
Z tego co widzę, gdy hasło jest poprawne funkcja zwraca 1?

Możesz zobaczyć na ten post jeszcze?
własny system sesji
Go to the top of the page
+Quote Post
barthpl
post 27.08.2008, 16:33:19
Post #8





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Cytat(robos85 @ 27.08.2008, 17:24:35 ) *
OK, dzięki.

Kliknij pomógł i będziemy kwita winksmiley.jpg

Cytat(robos85 @ 27.08.2008, 17:24:35 ) *
Z tego co widzę, gdy hasło jest poprawne funkcja zwraca 1?

Zwraca true (czyli 1) jak się weryfikacja powiedzie i fasle w razie porażki.


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
robos85
post 27.08.2008, 20:51:20
Post #9





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


dzięki serdeczne:)
teraz obmyślać sposób logowania i sesji i można działać:)
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:39