Как это сделать в Mojolicious? =›Имя пользователя, пароль, соление, шифрование, хэш — как все это работает

Я работаю с веб-фреймворком Mojolicious для создания небольшого сайта. Я стремлюсь к сильной безопасности. Первым шагом является защита информации для входа в систему, в основном имя пользователя и пароль. Я хочу реализовать логику, заданную автором этого сообщения Имя пользователя, пароль, соление, шифрование, хэш — как все это работает? . Имя пользователя и пароль должны быть как минимум обработаны солью и хешированы в браузере пользователя, прежде чем они будут отправлены на веб-сервер Mojolicious через Интернет. Я думаю, что лучший способ - использовать встроенный perl для управления значениями формы, а затем переназначить их так, чтобы при нажатии кнопки «отправить» только соленое и хэшированное имя пользователя, пароли были получены внутри контроллера: логика в mojolicious будет выглядеть так (скопировано с веб-сайта Mojolicious. MyUsers.pm обрабатывает проверку входа в систему на сервере, и я настрою его для обработки соленых и хешированных строк.)

#!/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> 

person Nishant Bhardwaj    schedule 19.02.2013    source источник


Ответы (1)


Наконец нашел решение в этой прекрасной статье ссылка . Однако имейте в виду, что существует множество библиотек javascript md5. По ошибке я скачал другую библиотеку md5, чем та, что указана в статье. Я потратил много времени, выясняя, что хеш-функция не работает, потому что у меня была другая библиотека md5. В статье используется библиотека md5 по этой ссылке.

person Nishant Bhardwaj    schedule 20.02.2013