2016-07-19 2 views
0

HTTP 패킷에서 JWT 토큰을 처리하는 표준적이고 안전한 방법은 무엇입니까?HTTP 패킷 (쿠키, 헤더 또는 JSON)에 JWT 토큰을 포함하는 올바른 방법

JWT가 쿠키로 설정되어서는 안되며, 브라우저가 자동으로 세션을 가로 채기 때문에 쿠키가 세션 도용을하게되므로 일반 세션 아이디 쿠키보다 JWT 토큰에 대한 추가 값을 제공하지 않습니다.

따라서 JWT 토큰을 헤더 또는 JSON 속성으로 포함해야합니까, 아니면 이것이 실제 문제입니까?

답변

0

쿠키와 인증 헤더에는 장단점이 있습니다.

쿠키를 사용하면 자바 스크립트가 값에 액세스하지 못하게 할 수 있지만 권한 부여 헤더에서만 허용하면 추가로 CSRF 보호가 필요하지 않습니다.

쿠키를 사용하면 <img 태그와 같은 자바 스크립트 요청을 쉽게 보호 할 수 있습니다.

따라서 정답은 없으며 표준이 없습니다. 당신은 중요한 것을 알아야합니다.

+0

당신이 의미하는 것 : 그리고 당신은, 컬 -X GET -H "... X-액세스 토큰을"

  • 내가 (예를 들어 헤더를 통해 토큰을 보내)) 더 이상 어떤 쿠키를 필요가 없습니다 자바 스크립트가 값에 액세스하는 것을 막고 태그를 보호하는 쿠키가 있습니까? 나는 쿠키가 자바 스크립트와 CSRF 기반의 공격에 취약하다고 생각했다. 인증 헤더가이 전제를 위조합니까? 또한 쿠키에 토큰을 저장하는 것이 브라우저에서이 쿠키를 자동으로 요청하도록 첨부하기 때문에 쿠키의 일반 세션 ID에 추가 보안을 제공하는 방법을 이해하지 못합니다. 나에게 더 큰 의미가있는 것은 토큰이 서버 응답의 TLS 암호화 된 헤더/본문에 있으며 세션 라이딩을 피하기 위해 프로그래밍 방식으로 각 요청에 추가해야한다는 것입니다. –

  • +1

    @TuomasToivonen은 '쿠키가 값에 액세스하지 못하도록하는 쿠키'로 'HttpOnly'쿠키를 의미합니다. 봐봐. ''태그와 같습니다. 기본적으로 자동으로 승인 헤더를 추가 할 수 없습니다. 쿠키는 자동으로 요청에 첨부되지만 인증 헤더에는 포함되지 않습니다. 예 쿠키는 추가 보호 기능이없는 경우 CSRF 요청을 허용합니다. – Evert

    +0

    그래서 전반적인 쿠키 + csrf 토큰 접근은 csrf 및 xss –

    -1
    1. 사용 HTTPS
    2. 설정은 가능한 한 작은 토큰 (5 분, 30 분,도 아니다 개월도 년)의 시간이 만료됩니다.
    3. 이전 토큰을 업데이트 할 때마다 새로 고침 토큰을 새로 고치고 새로 고침 토큰을 업데이트하십시오 (사용자가 로그인 할 때 의심의 여지가 없음)
    4. 토큰에 암호, 신용 카드 번호 및 기밀 정보를 저장하지 마십시오. (나는 shure 다. :))
    5. 권한 확인 (예 : ip 검사)에 필요한 모든 정보를 저장한다. REST API 및 수평 확장에 적합합니다. 로컬 호스트 : 3000)