Pracujem s webovým rámcom Mojolicious prepostaviť malé miesto. Zameriavam sa na silnú bezpečnosť. Prvým krokom je zabezpečenie prihlasovacích informácií, najmä používateľského mena a hesla. Chcem implementovať logiku zadanú žiadateľom tohto príspevku Používateľské meno, heslo, soľ, šifrovanie, hash - Ako to funguje? , Používateľské meno a heslo musia byť minimálnesolené a hashované v užívateľskom prehliadači pred ich odoslaním na webový server Mojolicious cez internet. Myslím, že najlepším spôsobom je použitie vloženého perlu na manipuláciu s hodnotami formulára a potom ich priradiť tak, aby pri stlačení tlačidla „odoslať“ bolo stlačené iba slané a hashované užívateľské meno, heslá sú prijímané v kontroléri: Logika v mojolicious by bola podobná (skopírovaná z webovej stránky Mojolicious. MyUsers.pm spracúva overenie prihlásenia na serveri a ja ho vyladím, aby som spracovala solené a hashované reťazce.)
#!/usr/bin/env perl
use Mojolicious::Lite;
use lib "lib";
use MyUsers;
# Helper to lazy initialize and store our model object
helper users => sub { state $users = MyUsers->new };
# /?user=sri&pass=secr3t
any "/" => sub {
my $self = shift;
$self->render("login");
};
any "/" => sub {
my $self = shift;
$self->render("login");
};
any "check_login" => sub {
my $self = shift;
# Query parameters
my $user = $self->param("user") || "";
my $pass = $self->param("pass") || "";
# Check password
return $self->render(text => "Welcome $user.")
if $self->users->check($user, $pass);
# Failed
$self->render(text => "Wrong username or password.");
};
app->start;
__DATA__
@@ login.html.ep
% title "Login Page.";
<form name="input" action="check_login" method="post">
User: <input type="text" name="user"><div>
Pass: <input type="password" name="pass"><div>
<!-- DO SOMETHING HERE to salt and hash $user and $pass before post -->
<input type="submit" value="Submit">
</form>
odpovede:
0 pre odpoveď č. 1Nakoniec sme dostali riešenie v tomto vynikajúcom článku odkaz, Majte však na pamäti, že ich je veľaknižnice javascript md5. Omylom som si stiahol inú knižnicu md5, ako je uvedená v článku. Stratil som veľa času zisťovaním, že hašovacia funkcia nefungovala, pretože som mal inú knižnicu md5. Článok používa md5 lib z toho odkaz