작성
·
221
0
HTTP의 statless,contectless성질을 보완하기 위해 쿠키랑, 세션에 대해 공부하면서 제가 이해 한게 맞는지 또한 궁금증이있어서 메일 보내드립니다.
예를들어 학교 강의포털 로그인 과정에서 처음으로 로그인을 성공하면 "아이디와 비밀번호를 저장하시겠습니까?"라고 뜰 때 "예"를 클릭하면 그때 서버에서 브라우저로 HTTP헤더에 쿠키를 추가해서 보내고
사용자가 다음에 강의포털을 들어갈때 이미 아이디와 비밀번호가 자동으로 입력된 이유는 브라우저에서 쿠키를 꺼내왔기때문이지 않나라고 생각했습니다. 하지만 쿠키는 만료시간이 설정되있고 이를 지나면 다시 쿠키를 생성하는 과정이라고 이해했습니다.
또한 쿠키에 담긴 정보는 경로,값,이름 등등이있지만 아이디와 비밀번호도 저장되어서 이와같은 보안 이슈때문에 세션을 사용한다고 이해했습니다.
세션은 쿠키를 사용하지만 클라이언트에게 보낼 때 HTTP헤더에 세션id를 부여하고 브라우저에 데이터를 저장하는게 아닌 서버에 저장한다는 차이점이있습니다. 그래서 서버 데이터과부화가 일어날수도있고 세션DB에서 해당 아이디가 맞는지 확인하고 서버에서 처리하기때문에 느리다는 단점이있다고 이해했습니다.
요즘 JWT를 사용한다지만 학부생 수준에서 로그인 과정을 만들때 어떤걸 사용해야 할 지 궁금하고 제가 이해한 내용들이 맞는지 혹은 잘못된게있으면 어떤점이 잘못되었는지 알려주시면 많은 도움이될것같습니다. 요즘 백엔드 공부하면서 네트워크의 중요성을 깨닫고있어서 여쭤봅니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
쿠키와 세션에 대한 설명을 잘 이해하셨네요. 맞는 내용들이지만 약간의 보완이 필요한 부분이 있습니다.
쿠키는 클라이언트(브라우저)에 저장되는 간단한 텍스트 파일로, 만료 기간이 설정되어 있다면 그 기간 동안 사용될 수 있습니다. 한번 클라이언트에 저장되어 있다면, 클라이언트가 다시 서버에 요청할 때마다 쿠키가 HTTP 헤더에 포함되어 전송됩니다. 따라서 쿠키를 사용하면 클라이언트 측에서 데이터를 저장하고 필요할 때마다 서버로 전달할 수 있어요. 이렇게 저장된 쿠키는 브라우저에 저장되어 있기 때문에 학교 강의포털에 접속하여 아이디와 비밀번호가 자동으로 입력되는 것을 확인할 수 있습니다.
하지만 보안 이슈 때문에 아이디와 비밀번호와 같은 민감한 정보를 쿠키에 바로 저장하는 것은 권장되지 않아요. 대신 쿠키에는 세션 id 와 같은 일종의 식별자만 저장하고, 실제 데이터는 서버에 저장하는 방법을 많이 사용합니다.
세션은 클라이언트 측에서는 쿠키를 사용하지만, 클라이언트에 저장하는 것이 아닌 서버에 저장됩니다. 세션 id는 쿠키를 통해 클라이언트에게 전달되어, 클라이언트의 브라우저가 서버에 요청할 때마다 서버에서 해당 세션 id를 기반으로 데이터를 찾아내어 사용합니다. 세션은 보안 면에서 좀 더 안전하다고 볼 수 있지만, 서버에 저장되기 때문에 세션 데이터 처리에 따른 서버 과부화가 발생할 수도 있습니다.
세션과 쿠키는 클라이언트와 서버 간에 상태 정보를 유지하기 위해 사용되는 도구라고 생각하시면 됩니다.
더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!