2013-12-19 4 views
-1

암호로 md5를 사용하고 MySQL에 저장하고 있습니다. 로그인하는 데 문제가 없지만 필요한 것은 사용자가 자신의 메일에 등록하는 동안 입력 한 정확한 암호를 보내려는 것입니다. 비밀 번호를 메일로 보내시겠습니까?php에서 md5 암호를 보내려면 어떻게합니까?

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
// encrypt password 
$encrypted_mypassword=md5($mypassword); 
+1

평문이 ** 복구 할 수없는 것은 해싱의 요점입니다. 그러나 여전히 MD5를 사용하고 있기 때문에 'MD5 aabbcc ... nn'에 대한 어떤 Google이든지 동일한 비밀번호를 찾을 가능성이 높습니다 .-) –

+4

1. MD5는 당분간 폐기되었습니다. 왜 그것을 사용하고 있습니까? 2. MD5는 해싱 알고리즘입니다. 그것은 * 편도 *임을 의미합니다. 너는 그것을 다시 얻을 수 없다. 3. 암호를 뒤집는 것은 나쁜 습관입니다. 사용자가 암호를 재설정하도록하십시오. –

+2

비밀 번호를 이메일로 보내고 싶지는 않을 것입니다. –

답변

-1

직접 질문에 대답하려면 MD5로 가정하면 사용자의 "초기 암호"를 보낼 수 있지만 사용하는 해싱 알고리즘에 상관없이 논리는 동일합니다.

$seed_password = $_POST['initial_password']; // Save the user's selected password to this variable. 
$hash_password = md5($seed_password); // This variable will now hold your hashed password. 

// Save the $hash_password to the database. 
# YOUR CODE HERE 

// Email the Seed Password (in the simplest manner possible). 
mail('[email protected]' , 'Your new password' , 'Your new password is '. $seed_password); 

이렇게하면 해싱하기 전에 비밀번호 값을 이메일로 전송합니다. 한편 해시 된 암호는 데이터베이스에 저장됩니다.

이제 사용자가 로그인하면 을 입력하기 전에 암호를 입력하고 해시 한 후과 데이터베이스의 해시 값을 비교해야합니다.

+0

비밀번호를 다시 설정하려고합니다. $ _POST를 사용하여 비밀번호를 가져 오는 것으로 가정하고 있지만 비밀번호를 입력하면 자동으로 생성되었는지 여부에 관계없이 비밀번호를 입력 할 수 있습니다. –

+0

정말 내 질문에 대답 해 주셔서 감사합니다. 이것은 내가 원하는 정확한 대답이다. 비록 내가 평문 패스워드를 보낼 위험성을 이해하고 있음에도 불구하고. 하지만 난 그냥 클라이언트 요구 사항을 물었다. 나는 이것에 관해서 고객을 납득 시키려고 노력할 것이다. 귀중한 답변을 주셔서 대단히 감사합니다. –

+0

사실 저는 변하지 않았습니다. 나는 페이스 북에 좋아하는 것 같아서 대답을 모두 좋아했습니다. 지금 막 그것 같이 아닙니다 똑같은 facebook 's 단추를 깨달았다. 당신의 대답은 내가 정확히 예상 한 것입니다. 다시 고마워. –

2

누구나 지적했듯이 md5를 사용하는 것은 좋은 생각이 아닙니다. 상대적으로 간단한 PHP로 구현할 수있는 bcrypt와 같은 것을 사용해보십시오. 당신이 무작위로 소금을 사용하는지 확인하고 그것이 제대로되고 있는지를 확인하기 위해 제대로 구현하십시오. 이 가이드는 https://gist.github.com/marcoarment/1053158으로 재생할 수있는 좋은 가이드입니다.

여러 수준에서 잘못된 옵션 인 사용자에게 암호를 보내는 대신 무작위로 생성 된 해시를 보내 자신의 응용 프로그램으로 가져 와서 암호를 모두 간단히 재설정 할 수 있습니다.

PHP로 메일을 보내는 것은 간단한 과정 일 수 있습니다. 이 http://php.net/manual/en/function.mail.php을 참조 할 수 있습니다. 몇 가지 좋은 예가 있습니다. 스팸으로 끝나지 않는 트랜잭션 메일을 보내려면 http://postmarkapp.com과 같은 서비스를 고려해야합니다.

+0

나는 PHP로 메일을 보내는 법을 안다. 사용자 이름과 암호를 보내고 있지만 그 암호는 내가 좋아하지 않는 해시입니다. –

+0

응용 프로그램 사용자는받은 편지함에서 일반 텍스트 암호를 가져와야합니다. 가끔씩 zerocool이 주위를 스니핑 (sniffing)하는 공중 와이파이에서 내 비 SSL 전자 메일 계정을 확인하고 메시지의 내용을 본다고 상상해보십시오. 내가 약간의 웹 사용자가 있다고 상상해보십시오. 암호를 평문으로 보았습니까? 나는 당신이 평문에 그것을 저장하고 있다고 가정하고 당신이 전염병처럼 제공하는 서비스는 피할 것입니다. 변명의 여지가 없습니다. 나쁜 습관이고 사용자를 불필요하게 위험에 빠뜨릴 수 있습니다. – Jared

+0

나는 모두에게 점수를 얻는다. 그러나 그것은 질문이 아니다. 실제로 물어 본 질문에 대한 제 대답을보십시오. –

0

문자열을 md5 문자열로 변환하면 더 이상 되돌릴 수 없지만 웹에서 md5 decrypter를 시도 할 수는 있지만 예상대로 100 % 작동하지 않습니다. 새 암호로 재설정하려고하면 더 안전하다고 생각합니다.

+0

친구. –

관련 문제