질문을 삭제하지 말아주세요.!
 
1
0
-1
안녕하세요.

초보라 난해한점 있어 질문 드립니다.

 

기존에의 사이트를 라라벨로 포팅 및 리뉴얼 계획을 잡고있습니다.

다른건 문제가 되지 않으나 기존 회원의 비밀번호는 1차로 MD5로 암호화하고 해시가 가능한 암호와를 2차로 하여서 사용하였습니다. 

라라벨의 기본auth를 이용하고 싶으나 이전하자니 md5로 암호한 비밀번호가 문제가 되어 라라벨의 bcrypt에 MD5를 추가하였습니다

 

app\Http\Helpers.php 를 만들어 bcrypt를 재정의 하였고 

function bcrypt($value, $options = [])
{
 $value = md5($value);
 return app('hash')->make($value, $options);
}

Illuminate\Foundation\Auth\AuthenticatesUsers.php 의 42번줄을 

$credentials = $this→credentials($request); 를

$credentials = md5($this→credentials($request)); 로

바꾸어 소정의 목적은 달성 하였습니다.. ^^;;;;;

 

헌데... vendor의 있는 파일을 수정해 버린지라 composer update를 하거나 뭔가를 하면 비번하게 원래대로 돌아가기도 하고...

아무리 생각해도 이렇게는 하면 안되겠다 싶어서 조언을 구하려 글을 써봅니다.

 

제 생각으로는 딱 저부분만 바꾸면 될것 같은데 어떻게 하면 좋을지 고수님의 조언 부탁드리겠습니다.

감사합니다.

    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      bcrypt 헬퍼내에서 md5로 해시하는 것은 방향을 잘못 잡으신 것 같습니다.

       

      가장 효율적인 방법은 Custom User Provider 를 추가하는 방법이지만...

      https://laravel.com/docs/5.3/authentication#adding-custom-user-providers

       

      조금 더 쉬운 방법으로 접근하자면...

      Laravel 5.3 기준 LoginController.php 에서 AuthenticatesUsers trait 의 login 메서드를 오버라이딩하는 것이 빠른 구현은 가능합니다.

       

      즉, login 메서드를 복사하여 LoginController.php 에서 재선언하고,

       

      attempt 메서드 이전에 기존 비밀번호가 md5 일 경우, 
      사용자가 입력된 값($reuqest->password)을 기준으로 bcrypt 로 갱신하면,
      기존 레인보우 테이블로 공격이 가능한 md5 보다 비밀번호 해시(단방향 암호화) 수준이 bcrypt 로 높아집니다.
      이러한 비밀번호 해시 마이그레이션 기법은 기존 사용자의 추가 행위없이 bcrypt 로 전환되는 장점이 있습니다.

       

       

       

        CommentAdd your comment...