2010-05-28 15 views
5

To nie jest specyficzne pytanie perla Buduję aplikację peri gui/wxperl, która łączy się z DB. Chcę, aby moja aplikacja była chroniona hasłem, tj. Najpierw użytkownik powinien wprowadzić użytkownika i hasło, a następnie użyć tej aplikacji.uwierzytelnianie na aplikacji GUI napisane na perl

jaka jest najlepsza bezpieczna metoda zapisywania hasła, czy ktoś może przedstawić pomysł, jaka jest najlepsza metoda, w jaki sposób powinien przechowywać użytkownika i hasło i jak powinienem je odzyskać w celu uwierzytelnienia? jeśli to możliwe, że ktoś może podać kod perla, jak to zrobić?

Odpowiedz

9

Z pewnością nie chcesz zapisywać haseł w postaci zwykłego tekstu, prawdopodobnie powinieneś rzucić okiem na używanie sha256. Możesz użyć Perla mod Digest :: SHA (patrz CPAN dla dokumentów).

use Digest::SHA qw(sha256); 
my $digest = sha256($input_password); 
my $saved_digest_password = get_saved_password_for_user($input_user); 
if ($digest eq $saved_digest_password){ 
    # they have the correct password 
} 

To tylko pseudo kod, ale powinno pomóc Ci zacząć. To Ty definiujesz "get_saved_password_for_user", ale chcesz to zrobić, czy to jest przechowywane w bazie danych gdzieś, czy w systemie plików lub gdzieś indziej. Upewnij się, że nie przechowujesz ani nie logujesz $ input_password w dowolnym miejscu. Jedyne, co powinieneś zachować, to hasło $ digest.

Nadzieję, że pomaga!

+1

+1 nawet jako psuedokodowe przechodzi do podstaw dopasowania hasła. – Axeman

+1

Dobra wiadomość, ale proszę nie używać znaku '&' przy wywołaniach podprogramów. Nie jest tu konieczne i ma bardzo konkretne znaczenie. Czy 'get_saved_password_for_user()' ma prototyp, który musi zostać tutaj zmieniony? Zobacz http://www.perlfoundation.org/perl5/index.cgi?subroutines_called_with_the_ampers i więcej informacji. – daotoad

+0

To jest bardzo dobra odpowiedź, ale jak wiesz Perl jest opensource, jeśli ktoś zmieni if ​​($ digest eq $ saved_digest_password) na if ($ digest ne $ saved_digest_password), a następnie wprowadzi dla każdego złego hasła może ktoś ma jakiś pomysł jak rozwiązać to w elegancki sposób? – oren

Powiązane problemy