자바(Java)/JAVA 2EE

사용자 정보를 유지하기 위한 쿠키와 세션

본클라쓰 2009. 10. 9. 10:06

사용자 정보를 유지하기 위한 쿠키와 세션

 

HTTP 프로토콜을 사용하여 서버와 클라이언트가 통신할 경우 서버와 클라이언트는 비연결 방식으로 통해 데이터를 전송합니다. 즉, 클라이언트가 서버에 데이터를 요청하면 서버는 처리 결과를 클라이언트에게 응답한 후 연결을 해제하는 방식으로 데이터를 전송합니다.

 

비연결 방식은 패킷의 교환이라는 개념으로 인터넷 상에서 네트워크 혼잡에 의한 피해를 최대한 줄이도록 구성된 방식입니다. 하지만 서버는 클라이언트와 연결을 유지할 수 없어서 같은 클라이언트의 요청에 대해 일괄되게 처리하기 어렵습니다. 이런 문제점들을 해결하고자 쿠키와 세션을 사용하여 클라이언트를 구별하며 클라이언트의 요청을 일괄되게 처리합니다. 

 

 

 

 

1. 쿠키(cookie)

 

쿠키는 일종의 텍스트 파일로 서버에서 클라이언트에게 쿠키라는 클라이언트 정보를 클라이언트의 자원에 저장시켜 놓습니다. 그 후 클라이언트가 서버에 요청할 시 쿠키 정보를 HTTP 헤더에 포함시켜 서버로 전송하게 합니다. 이 정보를 바탕으로 서버는 클라이언트를 구별하게 됩니다. 

 

 

 

2. 세션(session)

 

세션은 사용자와 서버과 지속적인 대화가 일어나고 있는 것을 의미하며, 쿠키와는 반대로 클라이언트의 정보를 서버에 저장하고 관리하는 방법입니다. 클라이언트는 서버에서 준 세션 ID를 가지고 서버에 접속하여 데이터를 요청하고 서버는 세션ID를 통해 클라이언트의 정보를 분석하는 방식입니다. 세션의 생성은 클라이언트가 브라우저를 통해서 처음 서버에 접속한 시점입니다. 보통 서버는 사용자의 마지막 요구가 있는 다음 지정된 시간이 지나면 세션을 종료합니다. 보통 세션의 유지 시간은 30분입니다. 

 

 

 

쿠키 사용시 주의점 

쿠키를 사용하여 클라이언트를 구별할 때는 주의를 기울려야 합니다. 쿠키는 텍스트 형태로 클라이언트의 자원에 저장되어 있으며 유지되는 시간이 있기 때문에 여러 사람이 사용하는 컴퓨터의 경우 쿠키의 정보를 바탕으로 해당 서버에서 클라이언트의 정보를 얻을 수 있기 때문입니다. 따라서 쿠키에 계정에 대한 정보가 있다면 해킹에 취약하게 됩니다. 따라서 중요한 정보는 세션을 통해 유지시키는 것이 좋습니다.