2014-02-12 3 views
6

인증을 위해 codeigniter 및 ion_auth를 사용하는 프로젝트가 거의 완료되었습니다. 이 작은 문제를 파악할 수 없습니다.CodeIgniter에서 ion auth를 사용하여 비밀번호 유효성 확인

사용자가 암호를 변경하려면 OLD_PASSWORD 및 NEW_PASSWORD 필드가 있습니다. OLD_PASSWORD는 데이터베이스 암호 (DB_PASSWORD)와 일치해야합니다. 그러나 암호가 데이터베이스에 저장되도록 암호화 된 방법을 알 수는 없습니다. 따라서 OLD_PASSWORD는 분명히 DB_PASSWORD와 일치하지 않습니다.

ION_AUTH 라이브러리의 기본 암호화를 변경하지 않았습니다. 내가 sha1() 함수를 시도하고 그것은 암호화와 일치하지 않았다. md5()와 동일하지만 암호를 더 이상 암호화하지 않는 것이 좋습니다.

누구든지 나를 위해 빛을 비출 수 있습니까?

+1

을 참고로, 당신은 않을 것입니다 실제로 데이터베이스에서 사용자의 암호를 읽을 수 있어야합니다. 가능한 경우 시스템이 안전하지 않습니다. – Krease

+0

확인. 그러면 암호를 확인하는 방법에 대해 어떻게 생각하십니까? 당신은 그것을 어떻게 지키고 있습니까? 보안에 관한 몇 가지 기사를 읽었지만 작가 사이에 많은 논란이있어 사이트를 안전하게 유지하는 방법을 알기가 어려워졌습니다. –

+0

[This] (http://www.troyhunt.com/2012/05/everything-youever-wanted-to-know.html) 및 [정보 보안 스택 엑세스 사이트의 암호 관리 태그] (http : // security.stackexchange.com/questions/tagged/password-management) 당신이 이것에 대해 배우고 있다면 몇 가지 추천 도서입니다. 원래의 질문에서 약간의 접선이지만이 분야에서 일하고 있는지를 아는 데 유용합니다. – Krease

답변

12

여기에 이온 인증 작성자가 있습니다.

기본 암호화는 슬프게도 하위 호환성을 위해 SHA1을 사용합니다.

구성에 CWrypt 대신 을 사용하는 것이 좋습니다.

암호가 소금과 함께 해시되었지만 암호에 대해 SHA1을 실행해도 동일한 결과가 나오지는 않습니다. 당신은 당신이 할 수있는 모든 기본값을 사용하는 경우 https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/models/ion_auth_model.php#L267

이 비교 :이 여기에 어떻게하는지 볼 수 hash_password() 메소드에서 봐

$user = $this->ion_auth->user(); 

$old_password = $this->input->post('old_password'); 

$password_matches = $this->ion_auth->hash_password_db($user->id, $old_password); 
+2

안녕하세요 벤,이 멋진 시스템에 대한이 문제를 해결해 주셔서 감사합니다. –

+0

예, 벤. 문서에이 점을 추가하는 것이 어떻습니까? 이전 비밀번호를 비교하기가 어렵습니다. 이제는 덕분에 잘되었습니다. – Daroath

+0

안녕 벤, 나는 여기에 대답을 시도했지만 작동하도록 할 수 없습니다. – claudios