Archives

You are currently viewing archive for 18 December 2008

[メモ] 18 December 2008 はてなブックマーク - DESで塩が甘すぎる件について Twitterでつぶやく

DESで塩が甘すぎる件について

よくありがちな、.htpasswdをPHPで生成するための下記のコード。結構普通に落ちてるサンプル。
これ、最初OKかと思ってたけど全然いかんだろ・・・・。
if (isset($_POST['password'])) {
$password = $_POST['password'];
$salt = substr($password, 0, 2);
echo crypt($password, $salt);
}

なにがいかんのかと言うと、
http://jp.php.net/crypt
にも書いてあるんだけどね。
 echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
こう書くと
 Standard DES: rl.3StKT.4T8M
こう出力されるわけですよ。
うん、そう。saltのrlどうよ・・・・・wそのまま付加されてるわけだ。
いやさ、だから最初の例だと$passwordの最初の2文字を暗号化後の頭に付加してる。
クラッカー大喜び、猫フリスキー・・・・・・。
ありえん!パスワードのヒント与えてるじゃん。

だから、最低限このぐらいやる必要あるよな・・・・。
 $password = $_POST['password'];
$clist = "abcdefghijklmnopqrstuvwxyz"
."ABCDEFGHIJKLMNOPQRSTUVWXYZ"
."0123456789_";
mt_srand();
$salt = $clist{mt_rand(0, strlen($clist) - 1)}
.$clist{mt_rand(0, strlen($clist) - 1)};
echo crypt($password, $salt);

下記のページが大変参考になる。ピンク色ですが、内容は素晴らしいw
cryptの使い方 - Magical Diary, beta version
http://diary.asuka.net/20070718

#ネットに落ちてるサンプルコピペってばかりいると猿になってしまう・・・・
«Prev || 1 || Next»