반응형
등록 스크립트에서 암호를 암호화하여 데이터베이스에 저장하고 로그인에 사용해야하므로 암호화되지 않은 암호를 사용하여 로그인하고 싶습니다. 여기에있는 스레드 중 일부를 읽었지만 아무것도 도움이되지 않습니다. 내 login.php에 어떻게 추가 할 수 있습니까? 솔트도 데이터베이스에 저장됩니다.
이것은 암호화를위한 register.php 스크립트입니다.
$hash = hash('sha256', $password1);
function createSalt()
{
$text = md5(uniqid(rand(), TRUE));
return substr($text, 0, 3);
}
$salt = createSalt();
$password = hash('sha256', $salt . $hash);
그리고 이것은 시즌이있는 내 login.php입니다.
//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['id'];
$_SESSION['SESS_FIRST_NAME'] = $member['username'];
$_SESSION['SESS_LAST_NAME'] = $member['password'];
session_write_close();
header("location: profile.php");
exit();
}
else {
//Login failed
//error message
}
else {
die("Query failed");
}
해결 방법
이 예제는 php.net에서 가져온 것입니다. 덕분에 새로운 PHP 해싱 기능에 대해서도 배웠습니다.
가능성과 모범 사례에 대해 알아 보려면 PHP 문서를 읽으십시오.
비밀번호 해시 저장 :
$options = [
'cost' => 11,
];
// Get the password from post
$passwordFromPost = $_POST['password'];
$hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);
// Now insert it (with login or whatever) into your database, use mysqli or pdo!
비밀번호 해시 가져 오기 :
// Get the password from the database and compare it to a variable (for example post)
$passwordFromPost = $_POST['password'];
$hashedPasswordFromDB = ...;
if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
참조 페이지 https://stackoverflow.com/questions/20764031
반응형
'MySql' 카테고리의 다른 글
MySQL mysql_num_rows (); (0) | 2020.12.15 |
---|---|
MySQL PDOException SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리가 없습니다. (0) | 2020.12.15 |
MySQL PHP and MySQL Select a Single Value (0) | 2020.12.15 |
MySQL 이전 달의 모든 행을 가져 오는 쿼리 (0) | 2020.12.15 |
MySQL은 데이터베이스 파일을 어디에 저장합니까? (0) | 2020.12.14 |
댓글