PHP パスワード認証

MySQL データベースに暗号化された文字列が保存されていて、それを元の文字列に戻せないか?と調べておりました。

多くのCMSはPHP で作成されていますが、文字列を暗号化する場合には md5() 関数が利用されていることが多いようです。

<?php
$pass = “password”;
$md5_hash = md5($pass);
echo “元の文字列: ” . $pass . “<br>”;
echo “暗号文字列: ” . $md5_hash . “<br>”;
?>

結果

元の文字列: password
暗号文字列: 5f4dcc3b5aa765d61d8327deb882cf99

PHP 関連の FAQを調べますと… 「md5 によって暗号化された文字列は元に戻せません」というのが一般的な回答みたいです。

確かに、考えてみれば… 「暗号化」技術は、元の文字列に戻すこと(復号化)ができないほうが「安全」なので、「複合化」の手順は用意されていないほうが信頼性があります。

WEBサイト管理者としては… お客様が設定されたパスワードが(仮にシステム担当者に限定されたとしても)露出することは好ましくありませんので、暗号化された文字列は暗号化されたままの状態で保持しておくほうが懸命だと思いました。

パスワード忘れた>再発行 という手順を踏むと、設定されているパスワードをメールで返してくれるサイトが多いですが… 親切? 自分が設定したパスワードをデータベースに「閲覧可能な文字列」として保持していることになるんですね。

パスワードの再発行依頼に対して、「こちらのURLで再設定してください」というメールが届く場合は、おそらくパスワードを複合できない状態で保持しているからで、「いちいち面倒だなぁ~」とは思いますが… こちらのほうが信頼できるサイトと言えるのかもしれません。

タグ:

コメントをどうぞ