스택큐힙리스트

JWT가 도난당한 경우에는 어떻게 될까요? 본문

카테고리 없음

JWT가 도난당한 경우에는 어떻게 될까요?

스택큐힙리스트 2023. 12. 2. 23:43
반응형

RESTful APIs를 위해 JWT를 사용한 stateless 인증을 구현하려고 합니다.


AFAIK, JWT는 REST 호출 중에 HTTP 헤더로 전달되는 기본적으로 암호화된 문자열입니다.


하지만, 요청을 볼 수 있는 도청자가 있고 토큰을 훔치면 어떻게 될까요? 그러면 그는 제 아이디로 가짜 요청을 할 수 있을까요?


실제로, 이런 우려는 모든 토큰 기반 인증에 적용됩니다.


어떻게 이를 방지할 수 있을까요? HTTPS와 같은 안전한 채널인가요?

답변 1

SSL은 다음과 같은 것을 예방하는 데 도움이 됩니다: 컴퓨터에서 네트워크 트래픽을 암호화하여 인증 중에 컴퓨터에서 어떤 서버로 -> 일부 서버는 네트워크 트래픽을 모니터링하는 제3자가 토큰, 암호 또는 그와 같은 것을 볼 수 없습니다) 서버의 개인 SSL 키의 사본을 어떻게든 얻을 수 있다는 경우를 제외하고. 이것이 모든 인증 형태에 대해 SSL이 필수적인 이유입니다.


그러나 누군가가 SSL을 이용하여 토큰을 볼 수 있는 공격을 수행하고 있다면, 당신의 질문에 대한 답은 , 공격자는 해당 토큰을 사용하여 당신을 가장할 수 있고 서버에 요청할 수 있을 것입니다.


이제 여기에 프로토콜이 등장하는 부분입니다.


JWT는 인증 토큰에 대한 표준 중 하나입니다. 거의 모든 것에 사용될 수 있습니다. JWT가 조금 멋진 이유는 추가 정보를 그들에 포함시킬 수 있으며 (서명) 누가 그것을 조작하지 않았는지 확인할 수 있다는 것입니다.

그러나 JWT 자체는 '보안'과는 전혀 상관이 없습니다. 실질적으로 JWT는 API 키와 비슷하며, 서버에 대한 인증을 위해 사용하는 무작위 문자열입니다.


질문을 더 흥미롭게 만드는 것은 사용된 프로토콜입니다 (아마도 OAuth2).


OAuth2의 작동 방식은 클라이언트에게 일시적인 토큰 (JWT와 비슷한)을 인증에 사용할 수 있도록 설계되었습니다. 이 토큰은 짧은 기간 동안만 사용됩니다!


아이디어는 토큰이 도난당해도 공격자가 단기간 동안만 사용할 수 있다는 것입니다.


OAuth2에서는 일정한 주기로 서버에게 사용자 이름/비밀번호 또는 API 자격 증명을 제공하여 토큰을 교환해야 합니다.


이 과정은 때때로 발생하기 때문에 토큰이 자주 변경되므로 공격자가 지속적으로 가장 어렵게 가장하는 데 어려움을 겪게 됩니다.


이것이 도움이 되었으면 좋겠습니다 ^^

답변 2

[Title]: JWT 유출 시, 어떻게 대처해야 할까요?
[Introduction]:
현대의 디지털 시대에서 보안 문제는 매우 중요한 이슈입니다. 사용자 인증과 데이터 전송을 위한 JSON Web Token (JWT)은 많은 애플리케이션에서 사용되고 있으며, 이에 대한 보안 위협은 무시할 수 없습니다. 본 글은 JWT의 유출 시 발생할 수 있는 문제와 대응 방안에 대해 알아보겠습니다.
[Body]:
1. JWT란?
JWT는 사용자 인증과 정보 교환을 위한 JSON 기반의 암호화된 토큰입니다. 보통 웹 애플리케이션에서 인증을 할 때 서버에서 발급하여 클라이언트에게 전달되며, 클라이언트는 해당 토큰을 이용해 서버에 인증 요구를 합니다.
2. JWT 유출 시 발생하는 문제
JWT가 유출될 경우, 다양한 보안 문제가 발생할 수 있습니다. 첫째, 해커나 악의적인 사용자는 토큰을 사용해 인증된 사용자로 위장하여 서버에 악의적인 행동을 할 수 있습니다. 둘째, 토큰 내에는 사용자 정보가 포함되어 있어 개인 정보 유출의 위험성이 존재합니다. 셋째, 만료 기간이 설정되어 있더라도 토큰이 유효한 동안에는 사용자가 로그아웃해도 계속해서 애플리케이션에 접근할 수 있습니다.
3. JWT 유출 시 대처 방법
JWT의 유출을 방지하고 대처하기 위해 다음과 같은 방법을 사용할 수 있습니다:
- 토큰의 만료 기간을 짧게 설정하여 토큰이 유출된 경우에도 유효 기간이 짧아 원치 않는 접근을 방지할 수 있습니다.
- JWT에 중요한 정보를 포함시키는 것을 피하거나, 가능한 경우 데이터를 암호화하여 저장할 수 있습니다.
- 토큰이 유출되지 않도록 안전한 저장소에 보관하거나, 토큰의 접근을 제한하는 서버 사이드의 논리적인 제어를 구현할 수 있습니다.
4. JWT 대안
JWT 대신에, 보다 안전한 다른 인증 방식을 사용하는 것도 고려해야 합니다. 예를 들어, 세션 기반 인증 방식은 서버 측에서 보다 직접적으로 사용자를 제어할 수 있으므로 보안성이 높습니다.
[Conclusion]:
JWT는 유출되었을 때 발생할 수 있는 보안 문제에 대비하는 것이 필수적입니다. 만약 JWT가 유출되면 해커에 의해 인증 위장이 가능하며, 개인 정보 유출의 위험성도 증가합니다. 따라서, JWT의 만료 기간을 짧게 설정하거나 암호화된 저장 방식을 사용하여 보안을 강화할 필요가 있습니다. 또한, JWT 대안을 고려하는 것도 중요한 결정입니다. 보다 안전한 인증 방식을 채택함으로써 사용자의 개인 정보와 애플리케이션 보안에 더욱 신경을 써야 합니다.

반응형
Comments