![]() |
![]() |
![]() ![]()
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
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Po przeczytaniu posta odnosi się wrażenie, że nie chodzi o to by pozycja miała jakiś hash, tylko że konkretna litera ma jakiś przypisany jej skrót. Dla mnie zrozumiałe jest, że powinno być coś w stylu o jakim piszesz blooregard, czyli niezależność znaków w haśle od ich hashy. Stąd właśnie ja zrobiłem zależność skrótu od zupełnie innego pola, bo to w tym momencie daje pole do popisu. Musiałbyś mieć dokładny kod aplikacji i dokładną kopię bazy. Jako admin wystarczy tylko pilnować aktualizacji tabeli gdy user zmieniałby pole na podstawie którego generujesz hashe. Ale to jest w tym właśnie najfajniejsze... Każda zmiana w "profilu" pociągałaby za sobą zmianę wyniku pól porównywanych. Jeśli więc ma hacker zrzut bazy choćby na 5 minut przed tym gdy użytkownik zmienił zawartość pola "newralgicznego" to włamywacz ma stare hashe, które są już nieaktualne mimo faktu nie zmienionego hasła (IMG:style_emoticons/default/smile.gif) Można też, by było zabawniej, generować takie pole co jakiś czas i zapisywać do bazy jako niewidoczne dla usera. Coś w stylu tokena (IMG:style_emoticons/default/winksmiley.jpg) To dawałoby nam niemal nieograniczoną liczbę kombinacji.
Ten post edytował thek 4.09.2009, 14:08:12 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 08:33 |