• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

세션과 쿠키에 대해 질문이 있는데요

20.04.15 16:58 작성 조회수 164

0

쿠키와 세션에 대해서 개념이 좀 잘 정리가 잘 안되요, 뒤죽박죽 머리에 엉겨있는 것 같은데,

1)클라이언트인 크롬 브라우저에서 쿠키를 생성하면,  session_start() 메서드가 그 쿠기를  sess_[cookie값] 이런식으로 저장하는 것인가요?

2)아래 코드를 보면 세션의 유효시간과, 쿠키의 유효시간을 동시에 설정해주셨거든요,
쿠기는 클라이언트단에서의 인증(?) 과 관련된 것이고 세션은 서버단에서의 유저를 인증하기 위한 수단이잖아요? 
아직 정리가 안되서 혼란스럽긴한데, 크롬브라우저에서 주는 쿠키를 세션 id 로 바꿔서 이용하는 것 같다는 생각이 들거든요. 
이게 맞나요? 쿠키와 세션관련한 프로세스가 어떻게 되는 것인지 궁금합니다.

// 세션의 라이프타 // 초단위
// ini_set('session.gc_maxlifetime', 3);
// session_set_cookie_params(3);


개념들이 파편적으로 있는 것 같아서요, 그런 것들을 한번 훓고 정리할 수 있는 ,
혹시 웹이 작동하는 원리나 개념에 대해서 전반적으로 다루고 있는 좋은 책이 있을까요?

답변 1

답변을 작성해보세요.

2

안녕하세요 :)

Q. 클라이언트인 크롬 브라우저에서 쿠키를 생성하면,  session_start() 메서드가 그 쿠기를  sess_[cookie값] 이런식으로 저장하는 것인가요?

A.

사실 쿠키와 세션은 별개의 개념으로 봐야합니다. 세션은 그저 클라이언트를 판별하기 위해 쿠키를 이용만 할 뿐입니다. 간단 명료하게 이야기하면 쿠키는 클라이언트에 저장되는 값, 세션은 서버에 저장되는 값입니다. 일단 이렇게 정리를 해두시면 좋을 것 같습니다. 세션 생성시 세션의 ID가 클라이언트에 쿠키로 저장되는 것은 단순히 판별하기 위한 것입니다.

Q. 아래 코드를 보면 세션의 유효시간과, 쿠키의 유효시간을 동시에 설정해주셨거든요,
쿠기는 클라이언트단에서의 인증(?) 과 관련된 것이고 세션은 서버단에서의 유저를 인증하기 위한 수단이잖아요? 
아직 정리가 안되서 혼란스럽긴한데, 크롬브라우저에서 주는 쿠키를 세션 id 로 바꿔서 이용하는 것 같다는 생각이 들거든요. 
이게 맞나요? 쿠키와 세션관련한 프로세스가 어떻게 되는 것인지 궁금합니다.

A.

1. 세션이 생성되면 세션 ID가 생성됩니다.
2. 세션파일 또는 데이터베이스 레코드는 서버에 세션 ID를 기반으로 값이 생성됩니다. 세션에 저장되는 값은 파일, 데이터베이스에 저장될 수 있겠습니다. 생성되는 세션 ID는 서버에서 유일무이 한 것으로 클라이언트를 판별하기 위해 사용합니다.
3. session_start() 코드가 담긴 소스를 클라이언트로 응답하게 될 때, 세션 ID가 담긴 쿠키를 설정하여 내보냅니다. 그리고 해당 쿠키의 값과 세션 ID를 비교하며 통신을 합니다. 그럼 왜, 쿠키로 소통을 하는 것일까요? 사실 웹의 근본인 http 프로토콜은 서버에서 응답을 주고나면 클라이언트와 서버가 연결을 끊어버리기 때문에 세션을 판별할 수 없습니다. 따라서 쿠키를 이용하여 ID를 판별하고 세션에 담긴 값을 사용합니다.

A.

개념들이 파편적으로 있는 것 같아서요, 그런 것들을 한번 훓고 정리할 수 있는 ,
혹시 웹이 작동하는 원리나 개념에 대해서 전반적으로 다루고 있는 좋은 책이 있을까요?

Q.

웹이 동작하는 원리에 대해서는 HTTP 완벽 가이드라는 책이 있습니다. 물론 저도 그 책이 너무 길어서 다 보지는 않았습니다. 꽤 두껍습니다. 내용도 심지어 지루하고. 그래도 알고가야 할 내용으로는 Http Methods, Http Headers, Http Messages, 요청과 응답 정도가 있겠습니다.