Cooka프로젝트/로그인기능

session 이란 ?

winhwi 2023. 9. 18. 19:37

session 이란 ?

 

web을 운영할때, 다수의 클라이언트의 로그인을 관리를 하는것에 대해 난관에 부딪혔다.

크게 3가지의 관리방법이 있는것으로 보인다.

  • cookie
  • session
  • JWT

여기서는 session에대해 알아보기로 하자.




Session이란 ?

세션(session)은 컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태를 의미하는 보안적인 다이얼로그(dialogue) 및 시간대를 가리킨다. 따라서 세션은 연결상태를 유지하는 것보다 연결상태의 안정성을 더 중요시 하게 된다. - 위키백과

 

쉽게말해 , 일정 시간동안 클라이언트의 요청을 하나의 상태로보고 그상태를 유지하는 방법이다.

구체적으로는, 클라이언트가 브라우저에 접속하여 서버와 접속이 종료하기 전의 상태를 의미한다.



 

Session의 연결과정

출처:https://dongsik93.github.io/til/2020/01/08/ti l-authorization(1)/

  • 클라이언트가 로그인을 시도한다.

  • 서버는 로그인을 검사한다.

  • 로그인 성공시,  session ID를 생성한다.
    이 session의 Key값은 UUID(중복되지않는 랜덤값)으로 설정한다.
    Value값에 클라이언트의 정보를 넣는다. 
    생성한 session을 서버측 세션 저장소에 보관한다.

  • session의 Key값을 쿠키를 통해 사용자에게 전달한다.

  • 사용자는 로그인 성공 이후 다른 요청을 할때마다 이 쿠키를 서버에 같이 전달한다.

  • 서버측에서 클라이언트로부터 UUID값을 받으면, UUID를 Key값으로 갖는 세션을 검색 후,
    존재한다면 그 session의 Value값의 클라이언트의 정보를 통해 인증을 진행한다.

  • 클라이언트가 일정 시간 웹서버를 이용하지 않으면 session은 자동으로 소멸된다.

 




Session 의 장점

session방식으로 인증상태를 관리하면 클라이언트의 중요정보들은 서버가 가지게 된다.

정보를 서버에 저장하기때문에 관리가 편하고 효율적이고, Cookie에 비해 안전할 수 있다.

 

새로고침, 브라우저 종료 , session유지 시간설정 등 세션 만료 기간 설정이 가능합니다.

 

 

Session의 단점

Cookie에 비해 조금 느리다. UUID값을 주고받은 후 인증을 거쳐 서버의 데이터를 참조해야하기 때문이다.

한계가 존재하는 서버자원을 사용하므로, 서버에 부하를 줄 수 있다.

 

Cookie에 비해 안전하지만, 취약점은 분명 존재한다.

대표적으로 HTTP Session Hi-jacking(세션 하이재킹)이다.

공격자가 중간에서 클라이언트의 세션ID을 중간에 가로채 사용한다면, 서버는 공격자를 클라이언트로 인식하여

웹서버에 접근 및 클라이언트의 정보를 제공하게된다.

 

서버의 메모리나 데이터베이스에서 session정보를 저장하기에, 확장성이 떨어질 수 있다.