2012-08-31 23 views
6

Pracuję nad aplikacją internetową dla mojego projektu Masters. Jest to system dla profesorów do zarządzania projektami studenckimi i wykorzystuje Javę dla kodu po stronie serwera, HSQLDB dla bazy danych i JSP dla warstwy prezentacji, i działa na tomcat. Dane, które będą przechowywane, nie zawierają żadnych poufnych informacji (identyfikator ucznia, informacje finansowe, nic w tym stylu), ale nazwy użytkowników i hasła są wymagane, więc chcę chronić hasła w przypadku, gdy uczeń używa hasła do moja aplikacja, której używają dla innej, ważniejszej aplikacji (bez wątpienia stanie się to, nawet jeśli powiem ludziom, żeby tego nie robili).Prawidłowe przesyłanie i zabezpieczanie haseł użytkowników do aplikacji internetowej

Nigdy wcześniej nie oglądałem tego typu rzeczy i jestem całkiem zgubiony. Znalazłem dobry artykuł wyjaśniający, jak używać Javy do create a hash of a password i znalazłem informacje w tomcat documentation wyjaśniające, jak ustawić schemat mieszania używany w dziedzinach i jak zrobić SSL with tomcat, a także JavaScript library, aby utworzyć hasze z haseł, ale Nie jestem pewien, jak połączyć wszystkie elementy i jakich elementów potrzebuję dokładnie.

Jeśli korzystam z biblioteki JavaScript do mieszania hasła i używania protokołu SSL dla kroku logowania (jest to niepotrzebne, myślę, że ponieważ inne dane nie wymagają ochrony), to przechowuj tylko zaszyfrowane wersje haseł w bazie danych Czy to wystarczy? Czy muszę zrobić coś więcej? Przebiegłem przez a question, gdzie odpowiedzi omawiały PBKDF2 i kilka innych rzeczy, ale to tylko bardziej mnie myliło ... Gdybym użył jednego ze schematów wspomnianych w tych odpowiedziach, jak mam to zrobić? Nie widziałem żadnych odniesień do nich w tomcat lub innych dokumentach, więc nie wiem, jak bym ich użył ...

Jeśli ktoś może wyjaśnić moje zamieszanie i powiedzieć mi, jaki jest właściwy sposób bezpiecznego przesyłania i przechowywać hasła, naprawdę bym to docenił.

Odpowiedz

3

SSL dba o zabezpieczenie całej warstwy transportowej. Nie musisz martwić się o dane wysyłane przez HTTPS.

Nigdy nie przechowuj prawdziwych haseł w bazie danych. Przechowuj tylko solone hashe wykonane z odpowiednio bezpiecznymi (tj. Nie MD5) funkcjami skrótu. Użyj innej soli dla każdego skrótu.

Jeśli postępujesz zgodnie z tymi zasadami, bez względu na używane składniki, będziesz miał rozsądny mechanizm przechowywania nazwy użytkownika/hasła.

+2

Upewnij się, że masz rację! – jtahlborn

+0

@jtahlborn, Tak! Jak mogłem o tym zapomnieć. Dodano do odpowiedzi, dziękuję! – Brad

+0

możesz zabezpieczyć pamięć w przyszłości, przechowując algorytm użyty w/każde hasło. który pozwala na uaktualnienie algorytmu w przyszłości bez zrywania istniejących użytkowników. – jtahlborn

Powiązane problemy