반응형
내 코드는 실제로 작동하지만 전혀 안전하지 않습니다. MD5는 안전하지 않기 때문에 사용하고 싶지 않습니다. 암호 해싱을 찾고 있었지만 어떻게 내 코드에 통합할지 잘 모르겠습니다.
로그인:
require_once __DIR__.'/config.php';
session_start();
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT * FROM users WHERE username = :u AND password = :p";
$query = $dbh->prepare($sql); // prepare
$params = array(":u" => $_POST['username'], ":p" => $_POST['password']);
$query->execute($params); // execute
$results = $query->fetchAll(); // then fetch
//hash passwords pls
if (count($results) > 0 ){
$firstrow = $results[0];
$_SESSION['username'] = $firstrow['username'];
echo "Hello $username you have successfully logged in";
//header ("location:.php");
}
else{
echo "Login Has Failed";
return;
}
레지스터:
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "<p>Thank you, you are registered</p>";
누구든지 내가 가지고있는 코드에 통합하는 방법을 보여줄 수 있습니까?
해결 방법
라이브러리를 사용하십시오. 진지하게. 그들은 이유가 있습니다.
스스로하지 마십시오. 자신 만의 솔트를 만드는 경우 잘못하고 있습니다 . 이를 처리하는 라이브러리를 사용해야합니다.
$dbh = new PDO(...);
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);
그리고 로그인시 :
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
if (password_verify($_POST['password'], $users[0]->password) {
// valid login
} else {
// invalid password
}
} else {
// invalid username
}
참조 페이지 https://stackoverflow.com/questions/29777684
반응형
'MySql' 카테고리의 다른 글
MySQL How to rearrange MySQL columns? (0) | 2020.11.22 |
---|---|
MySQL에서 : 테이블 이름을 저장 프로 시저 및 / 또는 함수 인수로 전달하는 방법은 무엇입니까? (0) | 2020.11.22 |
MySQL mysqldump 명령이 작동하지 않습니까? (0) | 2020.11.22 |
MySQL 자바를 사용하여 데이터베이스에 날짜 시간 삽입 (0) | 2020.11.22 |
MySQL Laravel의 열 증가 (0) | 2020.11.22 |
댓글