-1


0

ユーザー登録およびログインシステムにMD5ハッシュを実装する方法

PHPとMysqlを使用しています。 MD5を使用してハッシュ化されたパスワードを送信する方法を知り、ユーザーがログインしようとしたときにパスワードをチェックしたい。 試しましたが、正常に動作していません。 誰かがそれを行う方法を知っているなら、コードを教えてください。

3 Answer


5


`md5`はこの目的にはあまり適していません。 詳細については、http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html [この記事]をご覧くださいhowsとwhysですが、短いバージョンでは、代わりに `bcrypt`を使用する必要があります。 簡単なGoogleは、http://www.openwall.com/phpass/ [PHPass]が「bcrypt」をサポートしていると主張していることを示しています。

更新:@ Dragontamer5788がコメントで指摘しているように、http://www.tarsnap.com/scrypt.html [scrypt]は理論的な観点からは` bcrypt`よりも優れています。 著者は暗号が得意ですが、この時点で「bcrypt」よりもレビューが少なく、現実世界での露出が少ないことに注意してください。 私はまだそれを選択するでしょうが、それは「md5」よりも「bcrypt」ほどカットアンドドライされていません。


0


//Register:
$the_magical_salt = "everybody_is_obsessed_with_these_days$3^^2)(%=-"; // Even_though_md5_shouldnt_be_used
mysql_query('insert into users values (NULL,'.$filtered_username.','.md5($password.$the_magical_salt).');');
//Login:
$res = mysql_query('select password from users where username = '.$filtered_username);
$res = mysql_fetch_array($res);
if(md5($_POST['password'].$the_magical_salt) == $res[0]) echo "Yeah, you're welcome.";
else echo "Wrong password sugar";

md5()関数を2回使用する以外には、それほど多くはありません。


0


これ以上情報がなければ、あなたを助けるのは難しいでしょうが、あなたが望むと思うのはhttp://www.faqs.org/rfcs/rfc2617.html[Digest Authentication]です。

PHPドキュメントの例(具体的には例#7)は次のとおりです。http://php.net/manual/en/features.http-auth.php

このタイプの認証は、中間者攻撃を防止しないことに注意してください。 たとえば、誰かが被害者のネットワーク上のトラフィックを盗聴している場合、攻撃者はダイジェストされたユーザー名/パスワードの組み合わせでリクエストを簡単に再生でき、PHPスクリプトは攻撃者を被害者として喜んで認証します。