0

password_verify() 암호화를 사용하는 login.php 스크립트를 만들려고합니다. 주제의 아무도는 명확하지 않았다 및 문제 것은 내가 아니라 내부 하드 코딩 된 문자열에서 데이터베이스에서 해시 된 암호를 검색하려고한다는 것입니다 모든 예에서 나를 위해 지금이어디에 로그인 할 때 php에 password_verify()를 삽입하고 외부 파일에 registeration.php가 있는지

$password = '123'; 
    $hashed = '$2y$10$Lz6eWEzHqhNhiPkNYX/LAOfP.1zuyYJSc4u66TvF1bce9WrSbnSJK'; 

    $ver_pass = password_verify($password, $hashed){..} 

처럼 보이는 것입니다 . 내 샘플 코드 :

login.php 그런데

 $password = mysqli_real_escape_string($database, $password); 
    //Check username and password from database 
    $query = 
    "SELECT id FROM `register` 
       WHERE `username` = '$username' 
       AND `hashed_p` = '$password'"; 

     $result = mysqli_query($database,$query); 
     $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
     //If username and password exist in our database then create a session. 

      $verified_password = password_verify($password, $hashed_password); 

     if(mysqli_num_rows($result) && $verified_password){ 
     echo start session succesfully 
     }else{ echo error} 
    } 

register.php

$password = mysqli_real_escape_string($database, $password); 
$hashed_password = password_hash($password, PASSWORD_DEFAULT); 

$query = "SELECT email FROM register WHERE email='$email'"; 
$result = mysqli_query($database, $query); 
$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

$query = mysqli_query($database, 
"INSERT INTO `register` (`hashed_p`) VALUES ('".$hashed_password."')"; 
if ($query) {....} 

. 등록 프로세스가 성공적이며 password_hash()는 register.php 파일에서 정상적으로 작동합니다. 그러나 login.php 파일에서 데이터베이스에서 해시 된 암호를 검색하고이를 확인하는 데 사용하는 방법을 모르겠습니다. 감사합니다. 감사합니다.

+1

passoword에 대한 ID 및 비밀번호 _ 체크 아웃을 선택해야합니다. _Then_ db ('$ row [ 'hashed_p']')의 pwdHash가 password_verify를 통해 사용자가 준 것과 일치하는지 확인합니다. – Jeff

답변

2

암호를 확인하지 않고 ID & 암호를 선택해야합니다. 그럼 당신은 DB에서 pwdHash 있는지 확인 ($row['hashed_p'])는 사용자가 password_verify를 통해 준 하나와 일치 :.. 버전이 매우 안전하지 않은 때문에

$password = // the password in it's raw form how the user typed it. like $_POST['password']; 
//Check username (without password) from database 
$query = 
"SELECT id, hashed_p FROM `register` 
        WHERE `username` = '$username'"; 

$result = mysqli_query($database,$query); 
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
$verified_password = password_verify($password, $row['hashed_p']); 

if(mysqli_num_rows($result) && $verified_password){ 
    echo 'start session succesfully'; 
} else { 
    echo 'error'; 
} 

하지만의 (a prepared statements로 변경하십시오를 쉽게 해킹 할 수있는 단지 seach 'Bobby Tables'의 경우) :

+0

모든 트랜잭션이 http : // –

+0

@MammaMia 인 경우 안전하지 않습니다. SQL Server에 대한 트랜잭션은 안전하지 않지만 SQL 주입에 대해서는 언급하지 않았습니다. – Jeff

관련 문제