반응형
JWT (JsonWebToken)
구분
- 헤더
- 페이로더
- 시그니처
생성
- 헤더와 페이로더를 base64로 인코딩한다.
- 인코딩한 헤더와 페이로더를 해시 알고리즘으로 해싱한다.
- 해싱한 데이터를 시그니처로 사용하여 데이터 변형을 검증한다.
이점
- 토큰을 탈취당하면 기본 정보는 노출이 되지만 토큰 변조는 불가능하다.
- stateless 한 서버 개발이 가능하다.
- CORS가 가능하다. CDN 을 통해 프론트 엔드 전송, API 서버를 통해 데이터 전송이 가능하다.
- 쿠키가 없기 때문에 CSRF 방지가 가능하다.
단점
- 토큰이 탈취당하면, 만료기간까지 보안이 노출된다.
보완
- 인터넷이나 방화벽내에서 통신하는 것이 안전하다. 혹은 https
- 쿠키를 사용하여 토큰 저장시 HttpOnly를 사용하여 XSS 를 막는다.
기타사항
- OAuth는 토큰에 대한 정보를 데이터베이스에 저장한다.
참고용어
CORS (Cross Origin Resource Sharing)
- 응답받은 서버 도메인과 다른 서버에 요청을 보내는 것을 말한다.
- 원래는 보안상 이유로 막혀있었지만, 서버의 응답헤더를 통해서 허용범위를 지정할 수 있다.
CSRF
- Cross Site Request forgery
- 사이트 간 스크립팅(XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.
반응형