さて、私は自分のバージョンのSALTを書きました。私はそれをsalty lolと呼んでいます。私をからかってはいけません。とにかく、次のような私のスクリプトの登録部分は100%正しく機能しています。
//generate SALTY my own version of SALT and I likes me salt.. lol
function rand_string( $length ) {
$chars = "ABCDEFGHIJKLMNOPQRSTUWXYZabcdefghijklmnopqrstuwxyz1234567890";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}
$salty = rand_string( 256 );
//generate my extra salty pw
$password = crypt('password');
$hash = $password . $salty;
$newpass = $hash;
//insert the data in the database
include ('../../scripts/dbconnect.php');
//Update db record with my salty pw ;)
// TESTED WITH AND WITHOUT SALTY
//HENCE $password and $newpass
mysql_query("UPDATE `Register` SET `Password` = '$password' WHERE `emailinput` = '$email'");
mysql_close($connect);
しかし、私のログインスクリプトは失敗します。ログインするかどうかをテストしてエコーするように設定しました。常にFAILEDを返します。DBに入り、暗号化された塩辛いpwを「TEST」に変更して成功しました。したがって、私の問題は、私が想定しているこのLOGINスクリプトのどこかにあります。$Saltyをこれに実装する方法がわかりません。ただし、SALTYがなくても(暗号を使用してパスを保存するだけで)、ログインを正常に実行できなかったことにも注意してください。そして、あなたが私がblowfishを使うことを提案するつもりなら-私のウェブホストはそれをサポートしておらず、それをインストールする方法がわからないことに注意してください。
これが私のログインスクリプトです:
if (isset($_POST['formsubmitted']))
{
include ('../../scripts/dbconnect.php');
$username = mysql_real_escape_string($_POST['username']);
$password = crypt(mysql_real_escape_string($_POST['password']));
$qry = "SELECT ID FROM Register WHERE emailinput='$username' AND Password='$password'";
$result = mysql_query($qry);
if(mysql_num_rows($result) > 0)
{
echo 'SUCCESS';
//START SESSION
}
else
{
echo 'FAILED';
//YOU ARE NOT LOGGED IN
}
}
では、このログインの何が問題になっていますか?クリプト/クリプトのみを保存するだけでは機能しないのはなぜですか?
クリプトとランダムに生成されたSALTYの両方を保存して動作させるにはどうすればよいですか:)?
タイアドバンス