2016-10-25 2 views
2

시간을내어 질문을 읽어 주셔서 감사합니다! 나는 오늘 JWT에 대해 연구 해왔다. 원래는 HTTP 동의 쿠키 (서버에서만 발행 할 수 있음)에 저장하지 않는 한 JWT가 두 가지 주요 유형의 공격에 개방되어 있다는 현대적인 합의가 있다고 생각했습니다.JWT - LocalStorage 대 SessionStorage에 저장

는 배경 : 그러나

, 나는 해커가 토큰에 대한 액세스를 얻고 경우만큼 당신은 JWT 페이로드의 기밀 사용자 정보를 두지 않는 한, 괜찮아 오늘 배운 해제 인코딩을 왜냐하면 대부분 사용자의 고유 ID 만 표시하기 때문입니다. 서버가 JWT를 확인하고 페이로드의 하위 키 안에있는 ID를 가져 오면 서버에서 사용자 비밀번호 및 기타 기밀 정보를 가져올 수 있습니다.

그럼에도 불구하고, 해커가 예를 들어 토큰 MID 요청/응답을 가로 채고 토큰이 만료되지 않는 경우 어떻게되는지에 대해서는 아직 100 % 명확하지 않습니다. 내 이해에서 해커는 사용자의 계정에 액세스하여 사용자 페이지를 둘러 볼 수 있으며 해커가 비밀번호를 재설정하더라도 해커의 토큰을 해지 할 실제 방법이 없습니다. 해커가 STILL 토큰이 있고 서버가 의도 한 사용자가 아니라는 것을 깨닫기에 충분히 똑똑하지 않습니다.


어쨌든, 나는 단지 API로 백엔드 서버를 사용하고 있기 때문에 나는 그 문제에 Http 만 쿠키 또는 쿠키를 사용하지 수 있다는 걸, 그것은 (쿠키는 프로그램을 직면 내 프런트 엔드 클라이언트 서버를 건너 제공 할 수없는 React, 예를 들면).

이 경우, 인증 JWT를 저장하는 장소는 LocalStorage 또는 SessionStorage 중 2 곳 밖에없는 것 같습니다. 브라우저를 닫아도 토큰이 파괴되지 않는다는 사실 때문에 대부분의 사람들이 LocalStorage를 사용하게 될 것입니다 . ,

하려면 로컬 또는 SessionStorage는 JWT를 저장하는 유일한 '합리적인'장소임을되는 다른 것보다 안전하고 왜 하나입니다

내 주요 질문은 이것이다?

고맙습니다!

답변

5

SessionStorage은 모두 same specification에 정의되어 있으며 그 차이는 각 저장소에있는 데이터의 수명에 관한 것입니다.

보안 측면에서 보면 대부분입니다. SessionStorage은 세션을 종료하는 사용자의 수명이 짧고 자동 정리가되기 때문에 다소 안전하다고 주장 할 수 있지만 그게 문제입니다. 또한 브라우저를 닫아도 세션 저장 내용이 손상되지 않을 수 있습니다. 세션 저장소는 브라우징 컨텍스트의 수명에 연결됩니다.

사양은 명확주의 : 사용자 에이전트가 다시 시작한 후 재개 세션을 지원할 수로

브라우징 컨텍스트의 수명, 실제 사용자 에이전트 프로세스 자체의 수명과 무관 할 수 있습니다.

인해 사용자의 특정 요구 사항에

이미 제외 쿠키 (강조 광산입니다)하지만 토큰의 클라이언트 측을 저장하는 보안 고려 사항에 대한 좀 더 알고 싶다면 당신은을 읽어야 토큰을 저장할 위치? 섹션은 Cookies vs Tokens: The Definitive Guide입니다. 당신이 말한 토큰에 공격자가 액세스 할 대부분에 해당하는 경우 토큰이 요청을 승인하는 데 필요한 유일한 것은보다 베어러 토큰으로 알려진 것입니다 경우 발생하는 것과 관련하여


는 알고있다 토큰. 즉, 서버는 토큰이있는 모든 사람의 요청을 수락합니다. 이 때문에 누출의 영향을 최소화하기 위해 토큰의 수명이 단축되는 것이 좋습니다.

관련 문제