1

Mojolicious Web フレームワークを使用して小さなサイトを構築しています。強固なセキュリティを目指しています。最初のステップは、主にユーザー名とパスワードのログイン情報を保護することです。この投稿の質問者によって提供されたロジックを実装したいUsername, Password, Salting, Encrypting, Hash - How does it all work?. ユーザー名とパスワードは、インターネット経由で Mojolicious Web サーバーに送信される前に、ユーザーのブラウザーで少なくともソルト化およびハッシュ化する必要があります。埋め込み perl を使用してフォームの値を操作し、それらを再割り当てするのが最善の方法だと思います。これにより、「送信」ボタンが押されたときにソルト化およびハッシュ化されたユーザー名のみが押され、パスワードがコントローラー内で受信されます。 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> 
4

1 に答える 1

0

最後に、この優れた記事のリンクで解決策を見つけました。ただし、多くの javascript md5 ライブラリがあることに注意してください。誤って、記事に記載されているものとは異なる md5 ライブラリをダウンロードしてしまいました。別の md5 ライブラリを使用していたため、ハッシュ関数が機能しないことを理解するのに多くの時間を無駄にしました。この記事では、このリンクから md5 lib を使用しています

于 2013-02-20T08:12:48.107 に答える