웹 사이트의 간단한 등록 및 로그인 페이지입니다. 나는 암호 + 소금물 치는 것을 시도하고있다. 그게 내가 한 짓이야.하지만 내가 맞는지 확실하지 않아.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)에 대한 매퍼를 사용하고, 레이
암호를 암호화하지 마십시오 ... 대신 해시하십시오! 그리고''태그를 제거하십시오. 그것들은 오랫동안 사용되지 않았습니다! 마지막으로,'Location :'헤더는 RFC에 따라 절대 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