2014-09-02 3 views
0

crypt() 함수를 사용하여 데이터베이스에 암호를 해시했습니다.암호화 된 암호를 다시 요청 하시겠습니까?

$cryptpass = crypt($user_pass); 

지금 내가 "테스트"는 늘 일이 내 비밀번호를 사용하여 로그인 할 때. 는 여기에 일반 텍스트로 내 암호를 저장 한 전체 시간에

$user_name = mysql_real_escape_string($_POST['user_name']); 
$user_pass = crypt($_POST['user_pass']); 
$user_level = mysql_real_escape_string($_POST['user_level']); 

$encrypt = md5($user_pass); 
$admin_query = "select * from admin_login where user_name='$user_name' AND user_pass='$user_pass' AND user_level='$user_level'"; 

죄송합니다 내가 암호 해시에 좀 새로운 오전 로그인에서 PHP입니다.

EDIT :. 여기 쿼리 에코하면 결과는 토굴 = $ 1 $ vh4.Mq4 $ YaABh9aqRKbKpACTDApWb1 선택 * admin_login로부터 여기서 사용자 _ = 'testcr'AND user_pass = ". $ 1 $ vh4.Mq4 $ YaABh9aqRKbKpACTDApWb1 ' AND user_level = 'a', 실제 암호는 "test"입니다.

+0

[Crypt] (http://php.net/manual/ro/function.crypt.php) (php.net) 꽤 자명하다. –

+0

나는 방금 그곳에서왔다. 어쩌면 나는 암호를 알아내는 것을 너무 바보 스럽다. – user3684958

+0

데이터베이스의 해시가 어떻게 생겼는가? '$ encrypt '설정의 요지는 무엇입니까? 당신은 그것을 사용하지 않습니다. 또한 쿼리를 에코하여 어떻게 보이는지보고 원하는대로 수행하는지 확인하십시오. –

답변

0

암호를 저장할 수있는 매우 안전하지 않은 방법 (소금 제거없이 DES 및 MD5 해시)을 선택했습니다. PHP의 함수 password_hash()을 사용하여 BCrypt 해시를 생성하는 방법을 고려해야합니다.

확인을 위해 먼저 사용자 이름으로 데이터베이스에서 해시를 가져와야합니다. 이후 암호는 password_verify()으로 확인할 수 있습니다. 소금 때문에 SQL 쿼리로 해시를 직접 확인하는 것은 불가능합니다.

// Hash a new password for storing in the database. 
// The function automatically generates a cryptographically safe salt. 
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT); 

// Check if the hash of the entered login password, matches the stored hash. 
// The salt and the cost factor will be extracted from $existingHashFromDb. 
$isPasswordCorrect = password_verify($password, $existingHashFromDb); 

이 항목에 대한 자세한 내용을 읽을 관심이 있다면

safely storing passwords에 대한 내 튜토리얼을 살펴 있습니다.

0

SQL 문 디버깅을 시도하십시오.

$admin_query = "select * from admin_login where user_name='$user_name' AND user_pass='$user_pass' AND user_level='$user_level'"; 

echo $admin_query; 

SQL 엔진에서 쿼리를 실행하고 차이점을 확인할 수 있는지 확인하십시오.

+0

나는 SQL에서 queri를 실행했으며 다음과 같이 보입니다. crypt = $ 1 $ vh4.Mq4. $ YaABh9aqRKbKpACTDApWb1, select * from admin_login user_name = 'testcr'AND user_pass = 'testcr'AND user_level = 'a'입력 한 암호는 testcr이지만 데이터베이스 crypt는 일치하지 않습니다. – user3684958

+0

원래 게시물을 편집하십시오 - 귀하의 의견에 아무것도 표시되지 않습니다 – Corbin

+0

게시물을 살펴보십시오. – user3684958

관련 문제