inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

JWT에 대하여

jwt의 payload에 넣는 정보

715

lano

작성한 질문수 2

0

안녕하세요 강사님 좋은 강의를 제공해주셔서 감사합니다.

JWT는 header, payload는 base64 방식으로 인코딩 되는데 이 방식은 쉽게 복호화가 가능한 것으로 알고 있습니다.

그렇기 때문에 JWT를 클라이언트로 보내줄 때 payload에 mongodb의 _id, rdb의 primary key를 넣어주는 것은 좋지 않다고 생각합니다. 물론 강의는 학습을 위한 프로젝트이기 때문에 payload에 그런 것들을 노출 시킨 것은 알고있습니다.

그렇다면 실무에서는 payload에 어떤 값을 넣어주는 것이 적절한지 궁금해서 질문을 남깁니다.

react redux node.js 웹앱 mongodb

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
lano님, 질문해 주셔서 감사합니다.

실무에서 JWT의 payload에 어떤 정보를 넣는지는 보안 요구 사항과 애플리케이션의 요구 사항에 따라 다를 수 있습니다. 그러나 중요한 것은 인코딩은 데이터를 보호하는 방식이 아니라 단순히 데이터 형식을 변환하는 것임을 기억해야 합니다. 따라서 payload에는 민감한 정보를 담지 않거나, 담아야 한다면 암호화하는 것이 좋습니다.

일반적으로 payload에는 사용자를 식별할 수 있는 고유한 ID(중요한 것은 이 ID가 데이터베이스의 primary key와 직접 연결되지 않는 것이 좋습니다), 사용자의 역할이나 권한 정보, 토큰의 발급 시간 및 만료 시간과 같은 클레임(claims)을 담습니다. 사용자 세션을 관리하거나, 사용자의 상태를 유지하기 위한 정보를 넣기도 합니다. 하지만 이러한 정보도 필요한 최소한의 정보로 제한하고, 가능하다면 정보가 외부에 노출되어도 안전하도록 처리하는 것이 중요합니다.

실무에서는 JWT 토큰의 보안을 강화하기 위해 다음과 같은 접근 방식을 고려할 수 있습니다:

  1. HTTPS를 사용하여 토큰의 안전한 전송 보장: 통신 과정에서 토큰이 도청되는 것을 방지하기 위해 HTTPS를 사용합니다.
  2. 토큰 만료 시간 짧게 설정: 토큰의 만료 시간을 짧게 설정하여, 토큰이 탈취되어도 제한된 시간 동안만 유효하게 합니다.
  3. Refresh Token 사용: 보안성을 높이기 위해 짧은 만료 시간을 가진 Access Token와 별도로 장시간 유효한 Refresh Token을 발급하여, Access Token이 만료되면 Refresh Token으로 새로운 Access Token을 발급 받을 수 있도록 합니다.

JWT를 사용할 때는 이러한 보안 사항을 고려하여 안전하게 정보를 관리하는 것이 중요합니다.

강의 내용은 훌륭하나, 환경 설정 오류 때문에 진도를 나갈 수 없습니다. 20년 버전 강의.

0

68

1

강의자료는 어디서 볼 수있나요??

0

75

1

이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요

0

129

2

웹에서 실시간 코드반영이 안돼요

0

130

1

app.use질문

0

68

1

강사님께 어떻게 직접질문할수있어요??

0

82

1

const함수같은거 기초강의는 어디있나요

0

90

2

리덕스 참조챕터가 어딨어요? 미리듣고오라는데요

0

84

2

강의가완전 오래되서 다 틀리네 app.jsx도 tailwind css 다틀림 무책임함

0

72

1

개발자도구에 redux란이 없어요

0

93

1

npx tailwindcss init -p 에서 계속 에러나요

0

97

1

쇼핑몰기능중 찜하기 기능은 어떻게 구현하나요

0

145

2

강의하다 줌으로 설명가능한지좀 정확히 알려주세요. 이 선생님 정책이 어떻게 되는데요. 직접 연락할 메일이라도 알려주세요

0

45

1

도표 강의 자료 열람 불가능

0

112

1

tailwindcss를 vite에서 이용하는 방식이 바뀐것 같습니다.

0

1143

2

eslint 설정 후 오류가 납니다.

0

226

1

오버로드 오류

0

157

1

VSCode에서 save를 할 때, landingpage의 useEffect가 실행되는 문제에 대하여

0

175

1

dispatch(logoutUser()) 실행시 dispatch(authuser())도 함께 실행되는 문제

0

234

2

logout할 때, server로 요청을 보내서 authUser middleware를 통과하도록 하는 이유?

0

198

1

webkit-text-size-adjust 오류

0

319

1

does not provide an export named 'userReducer'

0

221

2

빌드 배포

0

141

1

삭제 예정 강의는 언제 삭제 되나요? 저것때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~

0

227

2