회원기능을 구현할 때, JWT 기능쓰라고 들었었음
사실 JWT가 그냥 좋다~ 하니까 그런갑다~ 했는데 나중에 면접에서
라고 물어보면
" 어.. 음... 오 아 예....
라고 대답할거 같아서 슥 봐보기로함
JWT(JSON WEB TOKEN) 란?
JSON 웹 토큰은 두 당사자 간의 청구를 안전하게 표현하기 위한 개방형 업계 표준 RFC 7519 방법이라고 하는데, 음... 안전하다는데 그냥 쓰면 안되나 무튼...
강의에서는 보안상의 헛점이 있어서 위험하다고 함
배경지식 : 회원기능 구현하는법
어떤 사이트(ex 드라마시청사이트) 에서 로그인한 사람만 해당 드라마를 보여주고 싶은거임
그럼 회원기능에는 2가지 방식을 사용하는데 동작방식은 둘다 비슷
입장권에 쓰여있는 정보만 다름
세션에는 간단한 정보만 들어가있음
세션스코어?
그럼 왜 JWT방식을 사용하냐?
장점 : stateless 함
( 회원이 많아질수록 부담이 적어짐 )
무슨 말이냐면 세션방식은 입장권을 하나하나 다까보면서 확인하는데
JWT는 그냥 입장권을 안까고 지나간다고 해석했음
이것은 마치 롯데월드 자유이용권이나
클럽에 가본적은 없지만 클럽팔찌, 클럽도장을 슥 보여주면 바로 통과하는게 JWT방식
입장할 때마다 지갑에서 신분증(주민등록증, 운전면허증, 여권 등등)을
꺼내서 직원이 확인하는게 세션방식
그러면 이제 JWT방식은 아주 빠른처리와 줄도 안밀리겠지만
세션방식은 일본처럼 아주 정석아날로그 거북이처럼 느리고 줄도 엄청 밀릴거임!
........이렇게 이해하는게 맞겠지?
그래서 JWT를 쓴다고 함
와 이해미쳤따 스스로 감탄중
사이트에 들어가보게되면 JWT입장권을 받을 수 있는데
간혹 입장되는 서버들이 있다고 함
하지맍, 최신라이브러리 잘 쓰면 걱정할필요까진 없다고 함
민감한 내용을 넣으면 안됨
예를들면 나의 몸무게(?) 같은 거말고 주민등록번호 그런거?
why? 디코딩하기 굉장히 쉽기때문
대충적는사람이 너무 많음
유튜브강의들 그대로 베끼면 인생 쫑난다고함 으어어억.....
해결 방법은
1. 키를 매우 어렵고길게
2. 공유금지
3.생성용키/검증용키 2개 사용
이건 깊게 생각할 필요없이 헬스입장권 생각하면 됨
이건 본인잘못임!
해결
1. 훔치기 어렵게(HttpOnly cookie)
2. jwt 블랙리스트 (특정입장권 입장금지) 하지만 이렇게짜면 세션이랑 다를게 없음
3. jwt 유효기간 짧게 (5분) - 이거쓰려면 refresh token (유효기간 1년 ) 사용하면됨
근데 Refresh token도 탈취당할 수 있으니 Refresh token rotation 이 필요하다함
아니 이건 뭐 계왕권 2배에서 4배 8배 가는거 같냐... 무튼
refresh token은 언제나 1회용으로 사용해야 안전하다함!
사용자가 엄청많지않다면 옛날 session 방식쓰자
그래도 JWT쓴다면 그냥 다른업체 인증서 같이 잘 쓰도록하자
일단 Django서비스 회원기능구현은 어떻게할지 고민좀 해봐야할듯 크흠흠...
출저 : 코딩애플 (유튜브)