![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Zwykle, dla bezpieczeństwa, trzymamy w bazie danych skrót hasła, utworzony za pomocą md5() bądź sha1(). Z myślą o tęczowych tablicach dopisujemy zwykle dodatkowo tzw. sól, która jest trzymana poza bazą danych, zwykle na serwerze.
Chciałbym jednak zwiększyć bezpieczeństwo również po stronie użytkownika i zastosować mechanizm znany z banków internetowych, czyli odpytywanie użytkownika o wybrane znaki hasła. Aby zastosować taki mechanizm jestem jednak zmuszony zapamiętać każdy znak hasła osobno. Powiedzmy, że w tym celu narzucę maksymalną długość hasła na 16 znaków i stworzę w tabeli bazy danych 16 dodatkowych pól (po 1 dla każdego znaku). Jak ma się jednak w/w sposób do tej sytuacji? Sam skrót to praktycznie żadne zabezpieczenie. Zastosowanie soli już bardziej, ale jest to wciąż bardzo słaby mechanizm. Co zrobić? |
|
|
![]() |
![]()
Post
#2
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Cytat Widzi ktoś wady takiego rozwiązania? No nie, w tym momencie to już raczej potencjalne włamanie nawet na oba serwery nic nie da, bo nie ma dostępu do algorytmu porównywania hasła. A z samych haszy, których przy uzyciu jakiegoś skomplikowanego algorytmu może być tyle, że skutecznie uniemozliwi to atak np. brute force czy inne metody. Tym bardziej, że rozdzieliliśmy znaki hasła na osobne rekordy. Zakładając, że kodu PHP skompilowanego dokodu pośredniego nie da się dekompilować (IMG:style_emoticons/default/smile.gif) Swoją drogą nadal jestem ciekaw, jak to wygląda "w realu". |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 21:32 |