카테고리 없음

[Fix] 회원 정보 수정시 암호화되지 않은 비밀번호, 아이디 변경?

NYinJP 2023. 5. 11. 01:42

회원 정보 수정 POST를 하면 DB상에서 암호화된 비밀번호로 저장이 저장이 되지 않는 문제가 있었다.

 

비밀번호 0101

 

이전에 회원가입 메서드를 확인해 보니 비밀번호의 암호화는 memberService 메서드 단에서 DB에 정보를 넘기기 전에 암호화하여 저장하였다.

// 수정 전
Optional.ofNullable(member.getPassword())
                .ifPresent(password -> findMember.setPassword(password));
// 수정 후 
Optional.ofNullable(member.getPassword())
                        .ifPresent(password->findMember.setPassword(passwordEncoder.encode(password)));
 

위와 같이 람다식을 이용해 간단하게 암호화된 비밀번호를 저장하도록 수정했다.

 

업데이트 요청시에 수정된 정보로 DB상에 업데이트는 잘 된다. 그러나 email은 바뀌지 않고 그대로였다. 

 

현재 우리의 웹 애플리케이션에서 이메일은 로그인에 필요한 아이디로 사용된다. 다른 웹을 이용할 때에도 

비밀번호나 다른 정보는 바꾸어도 아이디만큼은 바꾸지 않았던 기억이 나 ChatGPT에게 물어보았다. 

더보기

보안적인 이유로, 웹 애플리케이션에서는 일반적으로 회원의 아이디를 변경할 수 없도록 제한하는 경우가 많습니다. 사용자의 아이디는 보안상 중요한 정보 중 하나이기 때문에, 한 번 등록되면 일반적으로 변경할 수 없게 만들어져 있습니다. 대신, 사용자의 이메일 주소나 전화번호 등 다른 식별자를 변경할 수 있도록 제공하는 경우가 많습니다. 이 경우에는 이전 식별자와 새로운 식별자 간의 중복 여부를 확인하고, 중복되지 않는 경우에만 변경을 허용하는 방식을 사용합니다.

 

Spring Security에서 내부적으로 아이디로 쓰이는 정보는 수정할 수 없도록 하는 기능이 있지는 않습니다. 하지만 일반적으로 아이디는 회원가입 시에 등록하며, 이후에는 수정되지 않는 경우가 많습니다. 따라서, 아이디를 수정할 수 있는 기능을 구현할 때는 신중하게 검토해야 합니다. 만약 아이디를 수정할 수 있게 한다면, 이에 따른 보안 이슈도

 

아이디는 보안상의 이유로 잘 바꾸지 않는다고 한다.  또한 한번 만들어진 이메일을 바꾸겠나? 하는 생각이 들어서 

email 수정 기능은 빼는 걸로 하였다.. ㅎㅎ

 

 

 

문제를 메꾸어 해결한 느낌이 들지만 어쨌든, 수정사항을 빨리 알아차려서 다행이다.