2013-05-11 3 views
1

MD5를 사용하여 데이터베이스에 등록 된 암호를 해시하고 로그인 할 때 같은 문제가 있지만 등록 프로세스에서 암호가 해시되지만 로그인시 시스템 작동이 올바르지 않습니다. 비밀번호md5를 사용하여 암호 해시

register.php 당신은 MD5를 사용하지 않아야

$pass = md5($pass); 

$sql=mysql_query("SELECT user_id, email_address, first_name, user_name FROM user 
WHERE email_address='$email' 
AND password='$pass'LIMIT 1") or die("error in user table"); 
+0

문제가 무엇인지 더 자세히 설명해 주시겠습니까? 나는 전혀 모른다 ... –

+1

해싱은 훌륭하지만 무염의 MD5는 여전히 안전하지 못하다. (모든 무염의 해시는 레인보우 테이블 공격에 취약하며 특히 MD5는 안전하지 못하다.) 대신 소금에 절인 SHA2 변형을 사용해보십시오. 각 암호에는 자체 소금이 있어야합니다. 전역 소금은 여전히 ​​무지개 표를 사용할 수 있습니다. – cdhowie

+3

이것을 구현하는 중이라면 지금 당장 중지하고 https://github.com/ircmaxell/password_compat와 같은 적절한 암호 해시 체계를 사용하십시오. 무염의 MD5는 지금까지 영원히 부족했습니다. – deceze

답변

1

//ADD MD5 hash to the password 
     $db_pass=md5($pass1); 
//************Insert all the user's input to the database**************************// 
$query = mysql_query("INSERT INTO user(user_name, first_name, last_name, governorate, 
district, village, birth_date, email_address, specialization, password, 
registered_date)VALUES('$username', '$firstname', '$lastname', '$governorate', 
'$district', '$village', '$bdate', '$email', '$specialization', '$db_pass', 
now())") or die("could not insert data"); 

login.php. 그것은 안전하지 않으며 당신이 암호 해싱의 목적을 위해 그것을 사용하기에는 너무 빠르다고 waaaaay입니다 (빠른 암호 해싱 알고리즘을 사용하는 것이 왜 나쁜지 이해하지 못한다면 Brute-force attacks의 Wiki 페이지를보십시오). Bcrypt과 같은 것을 사용해야합니다.

crypt function을 통해 Bcrypt를 사용할 수 있습니다. 누군가가 위에서 언급 한 바와 같이

$userPassword = 'testpassword'; 
$hashed = crypt($userPassword, '$2a$15$usesomesillystringforsalt$'); 
echo $hashed; 

는 ircmaxell는 GitHub의에서 사용할 수있는 pretty good library 있습니다. 라이브러리는 PHP 5.5 (현재 베타 버전)에서 사용할 수있는 password_hash 함수와 포워드 호환됩니다.

+0

나는 암호 해싱의 목적으로 그것을 사용하는 것이 당신이 빨리하는 것이 waaaaay라는 것을 이해하지 못했다. – user2372265

+0

MD5는 Blowfish보다 훨씬 빠르기 때문에 제한된 하드웨어 기능을 가진 사람이라면 많은 양의 비밀번호 해시를 매우 신속하게 생성 할 수 있습니다. 즉, 데이터베이스가 공개되면 공격자가 여러 번 암호 해시를 해시 한 다음 사용자 테이블의 해시와 비교하는 것이 훨씬 쉬워집니다. http://en.wikipedia.org/wiki/Brute_force_attack을 참조하십시오. –

0

$ pass1과 $ pass가 같은지 확인하십시오! 그냥 해싱하기 전에 둘 다 똑같은지 확인하십시오.

MD5가 안전하지 않은 경우 sha256/sha512에 소금을 사용하거나 phpass을 사용하여 강력한 해시를 생성하십시오 (phpass는 암호 해시 생성에 WordPress에서 사용됨).