Dzisiaj otrzymałem pytanie od mojego kierownika, które zadaje mi moje przemyślenia na temat tego, co uważa się za akceptowalny projekt do uwierzytelniania aplikacji formularza internetowego, szczególnie w odniesieniu do charakteru wielu popularnych przeglądarek, aby „Zapamiętaj hasło” w polach typowego hasła użytkownika .
Mam problem ze znalezieniem odpowiedzi, która moim zdaniem jest do zaakceptowania. W świetle kłopotliwych wad bezpieczeństwa Sony naprawdę chcę zachować ostrożność, mimo że dane przechowywane na ludziach są mniej czułe. Nie przechowujemy numerów ubezpieczenia społecznego, a nawet adresów, przechowujemy jednak numery telefonów, adresy e-mail i zdjęcia odwiedzającego.
Obawia się, że użytkownik może po prostu zapamiętać hasło na terminalu publicznym, a następnie ktoś może po prostu wskoczyć na ten terminal i rozpocząć przeglądanie lub modyfikowanie danych w nieautoryzowany sposób. Jestem jednak całkiem pewien, że przynajmniej na stacjach roboczych Windows, że przeglądarka nie zapamięta hasła na kontach użytkowników Windows.
Poza tym wdrażam jednokierunkowe szyfrowanie hasła po stronie serwera (przechowuj zakodowane hasło w bazie danych, szyfruj hasło dostarczone przez użytkownika na serwerze, porównaj z zaszyfrowanym łańcuchem z bazy danych). Nie ma bezpośrednich planów włączenia szyfrowania SSL, jednak jest to nadal opcja.
Czy przy takim podejściu występują jakieś poważne wady bezpieczeństwa? Czy masz jakieś lepsze sugestie?
źródło
Odpowiedzi:
Kilka wskazówek na wysokim poziomie:
Moją propozycją byłoby zdobycie książki na temat zabezpieczania aplikacji internetowych. Jest tylko zbyt wiele informacji do przekazania w jednej odpowiedzi / blogu / artykule. Temat samego szyfrowania jest istotny.
źródło
Możesz spróbować zastąpić zachowanie przeglądarki - kilka dobrych porad tutaj:
/programming/32369/disable-browser-save-password-functionality
źródło
Powiedziałbym, że wszystko w porządku.
Większość użytkowników będzie wystarczająco jasna, aby nie zapisywać hasła na terminalu publicznym, a hasła będą przechowywane dla poszczególnych profili. Pamiętaj, że równie łatwo mogą napisać go na karteczce lub użyć słabego hasła.
Jeśli strona logowania nie jest zaszyfrowana za pomocą protokołu SSL, atakujący nie będzie trudny do wąchania tego hasła podczas przesyłania przez sieć. Dobra robota hashuje hasło w bazie danych, co uniemożliwi potencjalnemu napastnikowi zobaczenie haseł wszystkich (których mogliby użyć z adresem e-mail do próby zalogowania się na innych stronach, na których może znajdować się użytkownik).
Jeśli nadal chcesz, są sposoby, aby wyłączyć zachowanie przeglądarki, jak zauważył Chad. Widziałem to tylko na stronie mojego banku i systemie Microsoft Live.
źródło
W pewnym momencie nie możesz (i nie jest to prawnie wymagane) chronić użytkownika przed sobą. Funkcja „Zapamiętaj hasło” może być ryzykowna, ale ryzyko to przejmuje użytkownik. Podobnie, jeśli użytkownik zdecyduje się ponownie użyć hasła do wielu usług, przyjmuje na siebie to ryzyko. Nie musisz również ostrzegać ich przed nie zapisywaniem hasła na karteczce i przyklejaniem go do monitora, nawet jeśli użytkownicy często to robią.
To znaczy, dopóki ktoś z powodzeniem nie będzie się spierał i nie zmieni zasad. Zobacz także: „Ostrzeżenie: zawartość może być gorąca”.
źródło
Nie sądzę, abyś mógł niezawodnie kontrolować, czy przeglądarka pamięta hasło. To po prostu z twoich rąk, czy przeglądarka to robi, czy nie. Niekoniecznie stanowi to dla ciebie ogromne zagrożenie bezpieczeństwa . Zawsze należy zakładać, że ataki można przeprowadzać przy użyciu prawidłowych danych logowania. Nie zakładaj, ponieważ ktoś ma poprawnego loginu / przepustkę, że nie będzie to dobre. W końcu istnieje wiele sposobów, w jakie hasła mogą wpaść w niepowołane ręce.
Wydaje mi się, że możesz za każdym razem losować nazwy pól w formularzu logowania. Zamiast tego
<input name="username"
użyj czegoś takiego<input name="user658667587"
. Dzięki temu buforowane nazwy użytkowników byłyby bezużyteczne. Ale nie wiem, czy koszty ogólne byłyby tego warte. Nie wspominając o niewygodnych użytkownikach, którzy nie korzystają z publicznych maszyn.Jeśli znajdujesz się w sytuacji szczególnie wrażliwej na bezpieczeństwo (bankowość, inwestycje), możesz po prostu zapytać ludzi podczas logowania, czy jest to maszyna publiczna. Możesz również buforować znane adresy IP, gdy ludzie logują się, a jeśli logują się z innej lokalizacji, oprócz zwykłego użytkownika / hasła wymagają podania niepodpisanego numeru PIN (np. Kliknij zdjęcia). Mój bank robi coś podobnego.
źródło