강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Full Stack 개발자님의 프로필 이미지
Full Stack 개발자

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

BasicTokenGuard 구현해보기

회원가입

작성

·

52

0

안녕하세요

  @Post('register/email')
  @IsPublic() // 여기가 퍼블릭이여도 밑에서 가드를 통과해야하기 때문에 괜찮다.
  postRegisterEmail(@Body() body: RegisterUserDto) {
    return this.authService.registerWithEmail(body);
  }

위 코드처럼 회원가입을 할 때, 클라이언트에서 email, password를 보내주게 됩니다.

로그인할 때는 basic 토큰으로 email, password를 base64해서 암호화하여 보내는데 회원가입할 때는 클라이언트측에서 그냥 Body에 email, password를 노출시켜서 보내도 상관없는 건가요?

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

만약에 해당 부분 암호화가 필요하다면 복호화 가능한 암호화 알고리즘을 사용해서 암호화해서 프론트엔드에서 서버로 값을 보낸 후 서버에서 복호화하는 작업을 할 수 있습니다. 이럴경우 당연히 서버 리소스를 더 많이 사용하게 되는건 어쩔 수 없습니다.

"일반적으로 더 많은 방식"은 그냥 플레인하게 보내는 방식입니다. https를 사용하는 것 만으로도 충분한 보안이 된다고 생각하는 기업이 많습니다.

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. Full Stack 개발자님.

회원가입 시 클라이언트에서 emailpassword를 HTTP 요청의 Body에 포함하여 전송할 때 보안에 대한 고민이 있으신 것 같습니다. 일반적인 회원가입 시나리오에서 클라이언트는 emailpassword를 담아서 서버에 보냅니다. 이 경우, 기본적으로 HTTPS 통신을 사용하여 데이터가 암호화되도록 하는 것이 매우 중요합니다. HTTPS로 통신할 경우, 데이터는 네트워크에 전송되는 동안 암호화되기 때문에 중간에 가로채여도 안전하게 보호됩니다.

다음은 회원가입 시의 보안 고려 사항입니다:
1. HTTPS 사용: 클라이언트와 서버 간의 모든 통신은 HTTPS를 통해 이루어져야 합니다. 이를 통해 데이터가 암호화되어 전송됩니다.
2. 서버 측 검증: 서버에서는 받은 데이터를 철저히 검증하는 것이 필수적입니다. 특히 emailpassword와 같은 중요한 정보는 유효성 검사를 거쳐야 합니다.
3. 데이터 저장 시 암호화: 수신된 password는 서버에서 암호화된 형태로 저장되어야 하며, 이를 위해 bcrypt와 같은 알고리즘을 사용하는 것이 일반적입니다.

기본 토큰으로 email과 password를 인코딩하여 사용하는 로그인과 달리, 회원가입에서는 서버와 클라이언트 간의 안전한 채널(HTTPS)을 통한 전송이 가장 중요합니다.

관련한 질문과 답변에 대해 더 알아보시려면 아래 URL을 참고하시기 바랍니다:
- guard와 controller 토큰 추출 / 디코드 중복 코드 관련 질문 - Guard 및 토큰 처리 관련 코딩 패턴에 대해 논의한 적이 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Full Stack 개발자님의 프로필 이미지
Full Stack 개발자

작성한 질문수

질문하기