항해 미니 프로젝트 1주차 (1일)

황지성·2022년 11월 15일
0

20221114 TIL(Today I learn)


웹의 기능 중 하나인 로그인에 관련된 내용을 학습했다. 지난주와 다르게 새롭게 알게 된 내용들이 있어 흥미롭게 공부할 수 있었다.

1.로그인

  • JWT

    JSON Web Token의 줄임말로, JSON 객체를 사용해 정보를 안정성있게 전달하는 웹표준

JWT를 알아보기 전, '인증은 무엇이고, 왜 해야 하는 것일까?'에 대해 알아보자.

인증은 '나 자신을 증명하는 것'이다. 서버관점에선 들어오는 요청들에 대해 적절한 사용자가 맞는지, 증명하는 것이며, 클라이언트관점에선 '나 자신임을 증명하기 위한 도구 또는 행동'이다.
이러한 인증을 하기 위한 몇가지 방법이 존재한다.

1. URL에 정보를 함께 담는 방식
인증을 할 때 빠르고 쉽게 시도해볼 수 있다는 특징이 있지만 URL에 정보가 담겨져 있기에 개인 정보들의 민감한 정보가 담겨있을 시, 매우 위험하다. 즉, 보안에 매우 취약하다는 특징이 있다. 그래서 간단한 테스트를 진행하는 등의 실제 운영이 아닌 테스트단에서 활용한다.

2. Session / Cookie 방식

로그인을 통해 사용자임을 확인, 또는 인증받는다면 세션 저장소(서버사이드)에 정보를 저장하고 쿠키를 전달받는 방식이다. 쿠키의 용도는 세션 저장소에 저장한 데이터에 접근하기 위한 열쇠이다. URL에 정보를 함께 담는 방식과 비교했을 때, 중간에 탈취를 당하더라도 열쇠를 탈취당했을 뿐, 우리집(세션 저장소)가 어디인지 모르기 때문에 보안적인 측면에서 비교적 안전하다는 장점이 존재한다. 대신 해당 쿠키(열쇠)를 탈취하고 처음부터 HTTP 요청을 진행한다면 공격당할 수 있다는 단점이 있다.(세션 하이재킹)

3. 토큰 기반 인증 방식(JWT)

JWT는 Session / Cookie 방식과 함께 널리 쓰인다. JWT는 위에 명시된 것처럼 JSON Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 토큰을 의미한다.

Session / Cookie 방식과의 차이점은 토큰 안에 유저의 정보들이 들어간다는 점이다. 이는 서버에서 따로 저장소를 관리할 필요가 없다는 뜻이며, 서버를 확장하거나 유지, 보수하는데 유리하다.
또한 확장성이 뛰어나기에 토큰 기반으로 다른 인증 시스템에 접근이 가능하다.

그러나 JWT는 발급된 이후, 유효기간이 종료되기 전에 지속적으로 사용이 가능하다. 이는 JWT가 악의적으로 이용된다면 유효기간이 끝나기 전까지 계속 정보들을 뺐을 수 있다는 단점이 존재한다.

profile
성장하는 개발자

0개의 댓글