카카오 로그인을 통한 회원가입(사이트 DB에 따로 개별 ID와 비밀번호를 부여해서 저장되는 방식)을 구현한 것은 좋았지만 object형식으로 미리 지정된 비밀번호를 넘겨주다보니 암호화의 문제가 있었다.
여러 방법을 찾아보다가 bcrypt와 salt를 이용한 단방향 암호화 방식이 보안성이 우수한 것으로 보여 관련 모듈을 설치하여 암호화에 성공했다.
카카오 서버에서 가저온 사용자 정보들중 form state에 object 형식으로 저장. password는 env 파일에 저장해두고 가져와서 쓰고 소셜 로그인을 이용한 사용자들에게 모두 같은 비밀번호가 부여된다.
axios를 통해 form state를 그대로 전송하는 것이 아닌 bcryptjs를 통해 암호화한 비밀번호를 password값으로 전송한다.
DB확인을 통해 form state에 할당한 평문 비밀번호가 아닌 암호화 된 비밀번호가 저장된 것을 확인할 수 있다.
jwt에 해당 비밀번호를 실어보낸다.
중간에 로그인 버튼을 누를때마다 매번 비밀번호가 암호화 되는 바람에 jwt에 비밀번호를 전달하는 과정에서 애를 먹었는데 filter를 사용하여 해결했다. 보안상 자세한 내용은 생략한다.
모듈은 bcryptjs를 사용했다.