ex) 해외 축구를 보여주는 사이트가 있을 때 로그인한 사람만 보여준다고 할때 어떻게 이 사람이 로그인했는지 안했는지 파악할 수 있을까?
유저가 로그인시 시청권을 발급 해줌
유저는 축구를 볼때마다 시청권이 유효한지 파악하고 ok면 폴 수 있고 아니면 못 봄
session 방식
입장권에 들어가있는 정보가 거의 없다
발급번호만이 들어있다.
이 발급번호가 입장권발급목록에 있는지 파악해서 던져준다.
token 방식
회원명, 이메일, 발급일, 유호기간 등이 적혀있다.
이 때 유효기관에 별 문제가 없으면 유저를 통과
stateless함
단점: 회원수가 엄청 많을 경우 입장권 발급 목록을 다 뒤져서 유효한지 안한지 파악해야함
이때 jwt는 유호기관만 파악하면 됨
문제1. alg : none 공격
{
"alg": "HS256",
"typ": "JWT"
}
jwt 생성시 header에는 "alg", "typ"이 들어간다. 이때 alg를 "none"으로 하는 경우 문제가 발생한다 반드시 HS256를 사용해야한다.
문제2. jwt는 변환이 쉽다(decoding이 쉽다) => 개인에게 민감한 정보를 넣어선 안된다!! 다 털릴 수 있다.
문제3. 시크릿키 문제 => secret키를 대충 적으면 맞추기가 쉽다
특히 브루트포스 어택으로 다 뚫릴 수 있다.
해결책!!
문제4. jwt 탈취
jwt가 탈취당하면 해당 jwt를 정지시키거나 사용하지 못하게 할 수 없다.
해결책