2

HTML5、CSS、JavaScript、PHP、および MySQL DB を使用して Web サイトを構築しています。ログインページと「新規ユーザーページの作成」を作成しましたが、ユーザーアカウントをアクティブにするために電子メールを送信したいと考えています。私が今構築したものは機能していますが、十分に安全であることを確認したいと思います。

ユーザー アカウントを作成するときは、次のコードを使用します。

$Allowed_Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./';
$Chars_Len = 63;
$Blowfish_Pre = 'xxxxxxxxxxx';   <- not sure if that is something I can share with anyone
$Blowfish_End = 'xxxxxxxxxxx';   <- not sure if that is something I can share with anyone

$Salt_Length = 21;
$mysql_date = date( 'Y-m-d' );
$salt = "";
for($i=0; $i<$Salt_Length; $i++)
{
    $salt .= $Allowed_Chars[mt_rand(0,$Chars_Len)];
}
$bcrypt_salt = $Blowfish_Pre . $salt . $Blowfish_End;
$hashed_password = crypt($password, $bcrypt_salt);
$activationkey = crypt( $hashed_password . $uname);

(hash_pass + uname を使用して、ソルトなしで $activationKey の新しいハッシュを作成します。)

次に、データベースに uname、hashed_pa​​ssword、salt、activationkey を保存し、アカウントがアクティブ化されていないことを示すフラグを設定します。

次に、アクティベーションキーを含む電子メールをユーザーに送信します。

ユーザーがリンクをクリックすると、電子メール アドレスとアクティベーション キーが検索されます。見つかった場合は、データベースのactivationkeyフィールドをクリアし、ユーザーがアクティブ化されていることを示すフラグを設定してから、ユーザーをアクティブ化ページにリダイレクトします。

これについてのご意見をお待ちしております。

ガブリエ

4

1 に答える 1