2010-09-16 18 views
5

Słyszałem kilka powodów przechowywania haszowanych haseł w bazie danych. Jednak w interfejsach API uwierzytelnień są prawie zawsze dostępne opcje przechowywania haseł jako zwykłego tekstu lub szyfrowania.Dlaczego miałbyś chcieć przechowywać w bazie danych hasło w postaci zwykłego tekstu lub zaszyfrowane (nie hashed)?

Czy istnieje jakikolwiek powód, dla którego chcesz zapisać hasło jako zwykły tekst lub zaszyfrować w bazie danych?

Uwaga Aby być jasne, wiem, że przechowywanie nie zakodowane hasła są prawie zawsze złej. (O ile wiem, w każdym razie) Moje pytanie brzmi, dlaczego większość API uwierzytelniania zawierają opcje do przechowywania haseł zaszyfrowanych lub zwykły tekst.

+0

Wyjątkowo kiepskie wymagania klientów są jedynym powodem, dla którego mogę myśleć. –

+3

Nie ma żadnego dobrego powodu. Zawsze. Nie ma nic gorszego niż przesłanie zapomnianego formularza na stronie internetowej i podanie hasła pocztą e-mail. Ugh. –

+0

Earlz - Aby wyjaśnić, pytasz, dlaczego ciągi połączeń zezwalają na zwykłe hasła tekstowe lub uwierzytelnianie IIS? Nie dlaczego programiści mogą to zrobić (jeśli wiedzą lepiej)? – Kobi

Odpowiedz

6

Jedynym prawdziwym powodem, dla którego mogę myśleć, jest to, że baza danych należy do systemu, który sam jest ukierunkowany na prawdziwą aplikację. Tak jak wtedy, gdy masz programy, które logują się do czegoś dla ciebie (klienci poczty e-mail, klienci wiadomości błyskawicznych itp.).Wszyscy muszą przechowywać hasło w możliwym do odzyskania sposobie uzyskania dostępu, ponieważ docelowa aplikacja nie zdecyduje użytkownika użytkownika rzeczywistego użytkownika i za pomocą narzędzia. Dokładnie w tym momencie OAuth i alikes są jednak tworzone, aby zapisać hasło użytkownika.

1

Nawet jeśli jesteś pewien bezpieczeństwa bazy danych, hasła użytkowników są nadal dostępne dla wszystkich administratorów.

Jest niezwykle ważne, aby zrozumieć, że szyfrowanie hasłem nie chroni witryny, może ona chronić tylko hasła.

Jeśli Twoja witryna nie ma wystarczającej ochrony, szyfrowanie hasłem nie ochroni jej przed włamaniem. Jeśli twój system został złamany, haker może spowodować nieodwracalne uszkodzenie, a także uzyskać dostęp do poufnych informacji, w tym bazy danych haseł. Ale jeśli przechowujesz te informacje zaszyfrowane, hakerzy praktycznie nie mogą z nich skorzystać. Pękanie zaszyfrowanego hasła zabiera dużą ilość czasu i mocy obliczeniowej, nawet na dzisiejszych komputerach.

+2

Ten rodzaj odpowiedzi jest przeciwny do pytania;) –

5

Może jesteś hackerem i chcesz ich używać lub sprzedawać? It'll be hilarious the first few times this happens.

+1

+1 tylko dla odniesienia do XKCD –

+0

+1 dla odniesienia do bardzo niedawnego XKCD – Earlz

6

Jednym z powodów, dla których mogę myśleć, jest zezwolenie na opcję odzyskiwania hasła. Nie ma sposobu na odzyskanie hasła, którego system nie zna.

Oczywiście alternatywą dla systemu jest po prostu zresetowanie hasła do czegoś nowego i wysłanie nowego hasła.

+1

Resetowanie hasła powinno być bardziej opcją oszczędzania. –

+0

Uzgodnione. Był to jednak jedyny powód, dla którego nie mogłem wymyślić hasła. –

+1

Czasami odzyskiwanie starego hasła jest w porządku na niektórych stronach internetowych –

0

Oczywiście wszystkie hasła można przechowywać w postaci zwykłego tekstu (np. Bazy danych). Ale nie jest to zalecane. Jeśli ktoś zdoła zhackować twój serwer i pobierze twoje dane z bazy danych, dostanie też każde hasło. Nawet przechowywanie haseł za pomocą zwykłych metod, takich jak md5, nie jest w tym przypadku wystarczającym zachowaniem. Ponieważ istnieją tabele tęczowe (szukaj w tym celu), aby wyszukiwać hasła.

Polecam przechowywać solone hasła. Nie wiem, dlaczego kiedykolwiek przechowujesz hasła jako zwykły tekst. Nie zrobiłbym tego :)

0

Jednym z powodów może być automatyczne ponowne użycie hasła do innej usługi zewnętrznej.

Jeśli skonfiguruję konto Gmail, aby pobrać moją wiadomość e-mail od innego dostawcy usług poczty e-mail spoza Google, muszę podać mu hasło, a Google musi mieć to hasło w jasny sposób, aby moje wiadomości mogły być wysyłane na moje konto Gmail.

Oczywiście nie jest to to samo hasło, co w przypadku usługi podstawowej, ale mimo to jest to "hasło typu".

+0

Niezły punkt, ale w tym przypadku dostawca przechowuje hasło * a *, a nie własne hasło. – Kobi

+1

OAuth ma wspierać ten przypadek użycia i powoli zyskuje na popularności. –

0

Jedyny "dobry" powód, dla którego mogę myśleć, to to, że klient płacący za rozwój aplikacji lub twój menedżer nalega na to. Nie mogę myśleć o żadnych przyczynach takiego stanu rzeczy.

1

1) Większość protokołów uwierzytelniania Challenge-Response wymaga od serwera znajomości hasła w postaci zwykłego tekstu. Są wyjątki, ale są one niepopularne i trudne do wdrożenia.

2) Przechowywanie haseł umożliwia odzyskanie hasła.

+0

To jest dokładny system sprawdzania haseł o zerowej wiedzy, nie jest bardziej popularny. – Jacco

1

Mam napotkał następujący argument kilka razy:

Przechowywanie hasła zwykłego tekstu pozwala wykryć, gdy użytkownik zmieni hasło do czegoś blisko do starego hasła tj zwiększając liczbę, dodając „1”, lub inną metodą aktualizacji o niskiej entropii.

Nikt nie powinien brać tego argumentu za dobry powód przechowywania haseł w postaci zwykłego tekstu - jest to błędne z kilku powodów.

Powiązane problemy