본문으로 바로가기

JWT

category IT Technical 2020. 1. 29. 15:20
    반응형

    JWT (JsonWebToken)

    1. 구분

      1. 헤더
      2. 페이로더
      3. 시그니처
    2. 생성

      1. 헤더와 페이로더를 base64로 인코딩한다.
      2. 인코딩한 헤더와 페이로더를 해시 알고리즘으로 해싱한다.
      3. 해싱한 데이터를 시그니처로 사용하여 데이터 변형을 검증한다.
    3. 이점

      1. 토큰을 탈취당하면 기본 정보는 노출이 되지만 토큰 변조는 불가능하다.
      2. stateless 한 서버 개발이 가능하다.
      3. CORS가 가능하다. CDN 을 통해 프론트 엔드 전송, API 서버를 통해 데이터 전송이 가능하다.
      4. 쿠키가 없기 때문에 CSRF 방지가 가능하다.
    4. 단점

      1. 토큰이 탈취당하면, 만료기간까지 보안이 노출된다.
    5. 보완

      1. 인터넷이나 방화벽내에서 통신하는 것이 안전하다. 혹은 https
      2. 쿠키를 사용하여 토큰 저장시 HttpOnly를 사용하여 XSS 를 막는다.
    6. 기타사항

      1. OAuth는 토큰에 대한 정보를 데이터베이스에 저장한다.

    참고용어

    CORS (Cross Origin Resource Sharing)

    • 응답받은 서버 도메인과 다른 서버에 요청을 보내는 것을 말한다.
    • 원래는 보안상 이유로 막혀있었지만, 서버의 응답헤더를 통해서 허용범위를 지정할 수 있다.

    CSRF

    • Cross Site Request forgery
    • 사이트 간 스크립팅(XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.
    반응형