0xono Profile picture
Oct 6 9 tweets 2 min read
#FE #BE #JWT

그래서 JWT는 어디에 보관하는게 좋을까
1.
JWT는 JSON Web Token으로 stateless한 웹 환경에서 유저를 인증하기 위한 토큰이다.

서버가 관리하던 세션과 달리, 토큰 자체에 권한 정보 등이 Self-contained된 형태로서 브라우저에서 관리하여 서버의 부담을 줄일 수 있다.

이에 따른 장단점이 존재하는데, 이건 다른 스레드에서 다루겠다.
2.
발급받은 JWT를 브라우저에서 관리할 때, 우리는 몇가지 관리포인트를 생각해볼 수 있다.

1) 휘발성
- JWT는 보통 인증(authentication)에서 발급받아, 인가(authorization)에서 사용한다. 따라서 persistent 하지 않은 곳에서 관리할 경우, 매번 발급해야하는 UX적 오류가 발생한다.
3.
2) 보안성
- JWT는 self-contained token이기때문에, 탈취 당한 JWT이더라도 서버에서 expired될 때까지 조치할 수 있는 방법이 없다. 따라서 보안적으로 우수한 곳에 보관해야하는 개인정보급(또는 그보다 우위의) 데이터이다.
4.
위의 포인트를 기준으로 브라우저에서 1)영속성을 보장할(또는 흉내낼) 수 있는 옵션은 cookie 그리고 localStorage가 있다.

이 둘을 원론적으로 정리하기에는 무리가 있어, jwt 보관 관점에서만 이야기해보자면,
5.
LocalStorage
- CSRF 안전✅
- XXS 취약⚠️

Cache
- CSRF 취약⚠️
- XXS 안전✅

의 성격을 띄고있다.

CSRF = 유저가 의도하지않지만, (피싱사이트 등을 통하여) 유저의 권한으로 서버에 reuqest를 보내는 공격형태

XXS = 브라우저에서 js 코드를 삽입하여 공격하는 형태
6.
Best UseCase
- cookie(http only) + jwt(refresh token)
- 서버에서 매번 access token을 발급받아서 app 내 변수로 관리

이는 서버의 부하는 늘어나지만, cookie를 통해 xxs를 방어하고, access token을 직접 노출시키지않아 CSRF를 방어하여 보다 안전하다고 판단된다.
7.
현재 작업 중인 프로젝트에서는 inbound 정책을 폐쇠적으로 가, CSRF를 해결했기때문에, cookie + access token의 방식을 사용하는 것으로 결정지었다.
8.
추가적으로 SSR의 환경에서는 localStorage(브라우저 종속)값을 알 방법이 없어서, cookie를 사용해야한다.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 0xono

0xono Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @0xono_

Oct 13
#INFRA

컨테이너와 컨테이너 오케스트레이션
1.
기술을 습득하는 방식은 사람마다 상이하다. bottom-up 방식이 편한 사람도 있으며, top-down 방식이 편한 사람도 있다.

나 같은 경우에는 top-down 방식이 친숙하다. 기술 자체에 학습 목적을 두지않고, 특정 기술이 프로젝트에 필요할 때, 학습하는 편이다.
2.
involved된 프로젝트의 규모가 크면 크다는 이유(be specialist)로, 작으면 작다는 이유(low traffic)로 분명 많은 팀에서 사용하고 있지만 필요성을 느끼지 못한 기술스택들이 즐비하다. (주로 infra 계열)
Read 16 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(