ウェブサイトの簡単な登録とログインページ。私はパスワード+塩を暗号化しようとしています。それは私がやったことですが、正しいかどうかはわかりません。PHP暗号パスワード
これは、登録ページで何が起こるかです:
データベースで$blowfish = '$2a$10$';
$salt = '8dF$d_3';
$hashedPass = crypt($password,$blowfish . $salt);
、パスワード "RAYray99は" $ 2A $ 10 $ 8DF $ D_3」として保存され$$$$$$$$$$ $$$$。wxsfa7X.nkcGqldJ9fujdd8eY.H85uC」ログインページ
は、私は、データベース内のパスワードを入力したパスワードを確認する方法で立ち往生しています。
mysql_connect("$db_host", "$db_username", "$db_pass") or die(mysql_error());
//select the database or return error message
mysql_select_db("$db_name") or die("database does not exist");
$email = stripslashes($_POST['email']);
$email = strip_tags($email);
$email = mysql_real_escape_string($email);
$password = ereg_replace("[^A-Za-z0-9]", "", $_POST['password']); // filter everything but numbers and letters
$password = crypt($password);
$sql = mysql_query("SELECT * FROM members WHERE email='$email' AND password='$password' AND activateemail='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
// Get member ID into a session variable
$id = $row["id"];
session_register('id');
$_SESSION['id'] = $id;
// Get member username into a session variable
$username = $row["username"];
session_register('username');
$_SESSION['username'] = $username;
// Update last_log_date field for this member now
mysql_query("UPDATE members SET lastlogin=now() WHERE id='$id'");
// Print success message here if all went well then exit the script
header("location: account.php");
exit();
} // close while
} else {
// Print login failure message to the user and link them back to your login page
print '<br /><br /><font color="#FF0000">ERROR TRY AGAIN </font><br />;
exit();
}
私の質問は、私は、ログインpassswordは、データベース内の1で、ログインページで入力を検証する方法を次のとおりです。
このは、ユーザーを検証logingのPHPスクリプトです。
は、私は私のSQLクエリ(doctrine2)のためのマッパーを使用しています、 レイ
代わりにパスワードを暗号化しないでください!あなたの ''タグを取り除いてください。それらは何年も使用されていません!最後に、RFCに従って、あなたの 'Location:'ヘッダは絶対URLでなければなりません。はい、相対的なパスは一般的には動作しますが、そうでない場合は問題になりたくありません。また、SQLインジェクションの対象となります。 **ストリッピングスラッシュは、SQLインジェクションに対する適切な保護**ではありません!準備されたクエリを使用してPDOを学習します。 – Brad
なぜあなたはハッシュ(解読はほとんど不可能)の代わりにパスワードを暗号化しますか? パスワードをフィルタリングすると、より危険な状態になります。ところで、['ereg_replace()'](http://php.net/manual/function.ereg-replace.php)は非推奨です。 – ComFreek
あなたの質問に無関係なヒントは、変数を引用符で囲む必要はありません。たとえば、あなたの接続呼び出しは、 'mysql_connect($ db_host、$ db_username、$ db_pass)' – jprofitt