2012-12-30 2 views
0

로그인 로직에 대한 보안 감사를 수행하고 어떤 비밀번호 검사가 더 안전하고 더 나은 알고리즘인지 파악하려고합니다.PHP 로그인 페이지 보안 감사

$bcrypt = new Bcrypt(); 
$password_hash = $bcrypt->hash($_POST['password']); 
$result = mysqli_query_check_login($username, $password_hash); 

if(mysqli_numb_rows($result) > 0) { 
    //is valid 
} 

방법 II :

$bcrypt = new Bcrypt(); 
$result = mysqli_query_check_login($username); 

//Note $result->password is a bcrypt hash 
if($bcrypt->verify($_POST['password'], $result->password)) { 
    //is valid 
} 

의 차이는 다음 해시 bcrypt method I 실행하고 사용자 이름 보내고에서 암호를 해시 내가

방법 : 다음은 의사 PHP 코드의 두 가지 방법이 있습니다 mysql 쿼리. Method II은 mysql에서 해시 된 암호를 사용자 이름을 통해 얻은 다음 PHP에서 두 값을 비교합니다.

보안상의 차이점이 있습니까?

감사합니다.

답변

4

이들은 사실 동일한 것입니다. 두 가지 방법 중 하나를 사용하면 보안에 영향을주지 않아야합니다.

1
  1. Method II 사용자의 정보를 얻고 "실패한 로그인 시도"카운터와 같은 것을 업데이트하는 것이 더 간단 할 수 있습니다. Method I에 대해 본 대부분의 구현은 암호가 일치하지 않으면 사용자를 선택하지 않고 WHERE user=$login AND password=$password에 의존합니다.