Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C# - Zarządzanie użytkownikami login i password

16 Lut 2013 11:43 1968 4
  • Poziom 19  
    Witam,

    W jaki sposób zarządzacie użytkownikami w aplikacji do której ma mieć dostęp kilka osób. Mój sposób na to taki niewielka baza danych w której przechowuje login i hasło. Hasło dodatkowo hahs-uje jakimś algorytmem żeby nie można było go odczytać bezpośrednio z bazy danych. I za każdym razem kiedy użytkownik się loguje wyszukuje login w bazie po czym sprawdzam czy hasła się pokrywają. Ma to sens czy podchodzicie do tego w inny sposób ? Możecie polecić jakieś funkcje hash-ujące które się do tego nadają ?

    Pozdrawiam
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 40  
    Ja robię to w ten sam sposób...

    Jeżeli aplikacja ma działać tylko w sieci firmowej - zamiast hasła wykorzystuję autentyfikację ActiveDirectory (LDAP). Wtedy użytkownika nadaję takiego, jak ma użytkownik komputera - ludzie mają mniej haseł do zapamiętania. W bazie danych zaś przechowuję tylko nazwę użytkownika i pozostałe informacje odczytywane tylko wtedy, kiedy autentyfikacja LDAP się powiedzie.

    Jeśli chodzi o algorytmy hashujące zależy, jak bardzo paranoidalne mają być Twoje zabezpieczenia ;) - jeżeli nie bardzo, wystarczy zwykły MD5 albo SHA..., np. SHA256. Zaletą np. takiego md5 jest to, że często jego obsługa jest już wbudowana w bazę danych i możesz go wykorzystać już na poziomie zapytania SQL. Wada - jak ktoś się uprze a użytkownik wymyśli proste hasło, to go złamie, powiedzmy, w miarę prosto.
    Ja piszę głównie aplikacje do zamkniętej firmowej sieci, więc md5 w zupełności mi wystarczy.

    Bardziej skomplikowanych algorytmów nie znam, to nie polecę, ale może ten wątek jakoś Cię natchnie ;)
  • Poziom 38  
    Jeden z bardziej "skomplikowanych" algorytmów to hashowanie z tzw solą (salt). Można o tym poczytać tutaj: http://pl.wikipedia.org/wiki/S%C3%B3l_(kryptografia) . Cała zabawa polega na tym, że do swojego hasła dodajesz jakiś stały ciąg znaków i to hashujesz. W bazie trzymasz tylko hashe. Właściwie to nie powinieneś porównywać haseł i w żaden sposób ich rozszyfrowywać. Powinieneś porównywać tylko hashe. Do samego hashowania polecam jednak używanie SHA
  • Poziom 40  
    Jeżeli hasło w bazie jest zakodowane funkcją skrótu to, z założenia, takiego hasła nie można odzyskać, więc i problem przypominania nie istnieje. :)
    Zamiast tego często stosuje się rejestrację z podaniem e-maila (na który można też wysłać link aktywacyjny), e-mail jest zapisany w bazie z użytkownikiem i kiedy ten zapomni hasła, podaje swój e-mail, na który wysyłany jest specjalny link przekierowujący na stronę, gdzie użytkownik można na nowo podać hasło do swojego konta.
    Jeżeli chcesz mieć możliwość jego odzyskania to sposób podobny, z tym że zamiast MD5 czy SHA musisz użyć jakiegoś odwracalnego algorytmu z kluczem, np. 3DES