본문 바로가기

CS 전공지식

24.02.14 웹, 네트워크 관련

1. 쿠키와 세션

  1) 쿠키

       - 클라이언트의 로컬에 Key - Value 쌍이 String 형태로 저장되는 데이터 파일

       - 브라우저가 종료된 후에도 상태가 유지됨

       - 클라이언트의 상태 정보(이름, 값, 만료 날짜 및 시간, 경로정보)를 포함

       - 클라이언트 로컬에 저장되므로 보안에 취약해 로그인 같은 인증에 잘 쓰이지 않음

       - 단순한 아이디의 저장이나 쇼핑몰의 장바구니 담아두기 같은 기능에 사용

 

  2) 세션

       - 일정 시간 같은 클라이언트로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 유지하는 기술

       - 브라우저가 종료되기 전까지 상태가 유지

       - 상태 유지 수단으로 쿠키를 사용하지만, 사용자 정보를 클라이언트 로컬이 아닌 서버측에서 관리

       - 보안상 중요한 작업인 로그인 기능에 사용

 

  3) 쿠키와 세션의 필요성

       - HTTP 프로토콜의 경우 Connectionless(비연결성), Stateless(무상태) 한 특성이 있어 요청간에 의존관계가 없다

       - HTTP 프로토콜의 경우 매 통신마다 새로 연결해야 하기 때문에 현재의 클라이언트가 이전 접속자와 같은지를

         알 수 있는 방법이없다

       - 위 사항을 보완하는데 쿠키와 세션이 사용됨

     (1) 쿠키 동작방식

           - 클라이언트가 페이지 요청

           - 서버에서 쿠키를 생성하고 HTTP 헤더에 쿠키를 포함시켜 응답

           - 브라우저가 종료되어도 쿠키 만료기간이 있다면 클라이언트에서 보관함

           - 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄

           - 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를

              HTTP 헤더에 포함시켜 응답

     (2) 세션 동작방식

           - 클라이언트가 서버에 접속시 세션 ID 발급

           - 클라이언트는 세션 ID 에 대해 쿠키를 사용해서 저장하여 가지고있음

           - 클라이언트는 서버에 요청할 때 이 쿠기의 세션 ID 를 같이 서버에 전달하여 요청

           - 서버는 세션 ID 를 전달 받아 별다른 작업없이 세션 ID 로 세션에 있는 클라이언트 정보를 가져와서 사용

           - 클라이언트 정보를 가지고 서버 요청을 처리하며 클라이언트에게 응답

 

2. 세션기반 인증과 토큰기반 인증

  1) 세션기반 인증

       - 클라이언트에게 세션 ID 를 발급해 세션 정보를 서버에 저장하여 사용자를 검증하는 방식

       - 데이터 베이스 서버에 저장됨

 

  2) 토큰기반 인증

       - 따로 정보를 DB 에 저장하지 않고 인증된 사용자에게 토큰을 발급하여 서버에 요청시 토큰을 함께 보내고

         유효한지 확인하여 검증하는 방식

       - 사용자 정보를 서버에 저장하지 않고 클라이언트의 요청에 따라서 응답만 하는 Stateless 한 구조를 가짐

 

'CS 전공지식' 카테고리의 다른 글

24.02.16 웹과 통신  (1) 2024.02.16
24.02.15 Spring 및 웹개발  (0) 2024.02.15
24.02.13 Java 관련 4  (1) 2024.02.13
24.02.07 Java 관련 3  (1) 2024.02.08
24.02.07 Java 관련 2  (1) 2024.02.07