ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 세션(Session)이란 무엇일까?
    Engineer information security 2021. 2. 22. 02:04
    반응형

    클라이언트의 상태 정보 유지 기술로는 쿠키(Cookie)가 있다.

    그렇다면 서버의 상태정보 유지 기술은 무엇이 있을까?

    그게 바로 세션(Session)이다. 

    세션은 클라이언트 별로 각각의 상태 정보를 서버에서 저장하는 기술이다.

    세션의 연결 방식은 어떻게 구성 되는지, 왜 사용되어야 하는지 알아보자.

    만약, 서버가 상태정보를 유지할 수 없다면.. 클라이언트는 연속적인 동작을 할 수 없을 것이다. 가장 많이 예로 드는 것이 온라인 쇼핑몰의 장바구니의 개념이다. 클라이언트가 쇼핑몰에서 여러 가지 상품을 구매하려고 장바구니에 상품을 담았다고 가정해보자.

     

    하나의 상품을 담는 작업을 하면, 서버는 장바구니에 보관을 할 것이다. 그리고 또 다른 상품을 장바구니에 담는다. 이때, 서버는 이전의 장바구니에 담은 상품이 있는지 파악이 안 될 것이다. 왜냐하면 이전에 장바구니에 담은 상품이 있다는 상태를 유지하지 않았기 때문(Stateless)이다.

     

    로그인 역시 마찬가지다. 로그인을 하고 난 뒤, 로그인이 되어 있는 상태를 유지하지 않는다고 하면  로그인을 반복적으로 해야 할 것이다.

     

    그래서 클라이언트 별로 세션 ID를 부여하고 상태 정보를 유지한다. 아래 정보는 세션의 연결 방식을 그린 것이다.

     

     

     

    - 클라이언트는 서버에 로그인을 시도한다.

    - 서버는 로그인을 확인하고, 세션 ID(Session ID)를 생성하여 클라이언트에게 응답한다.

    - 클라이언트는 세션 쿠키를 저장하고 웹서버의 서비스를 이용한다.

    - 서비스를 이용할 때 변경되는 정보를 서버의 세션ID(Session ID)에 저장해둔다.

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

     

    세션 연결 방식
    세션 연결 방식

     

     

     

    이 방식은 쿠키보다 안전하지만 취약점은 존재한다. HTTP Session Hijacking이다. 공격자가 중간에 사용자가 정상적으로 생성한 세션 ID를 중간에 가로채서 사용한다면, 서버는 공격자를 사용자로 인식하여 웹서버에 접근 및 사용자의 정보를 갈취할 수 있다.

    반응형

    댓글

Designed by Tistory.