내 스프링 스승님 김영한 팀장님에게 배운 것을 복습하고, 내가 어떻게 받아들였는지에 대한 에세이!
딱히, Spring에 속할 테마는 아니지만 Spring 강의를 들으면서 한 번 정리하면 좋을 것 같은 개념이라 생각되어서 Spring 테마를 달았음!
우선 쿠키의 정의는
하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일...
이라 한다.. 굉장히 어렵다
로그인에 대해 공부하다가 쿠키를 알게되었다.
제일 무책임?한 방법은 클라이언트에서 매번 요청마다 User의 id를 계속 넣어서 서버에 보내면 서버는 그 id를 가지고 DB에서 user를 찾아서 서비스하면 된다.
ㅋㅋㅋㅋ 이렇게!!
그러나 이렇게 하면 딱 보기에도 많은 문제점이 있다.
모든 요청과 링크에 User의 정보를 포함한다..? 당장에 두 가지 문제가 떠오른다 ㅋㅋㅋ
이를 해결하기 위해 쿠키라는 존재가 탄생되었다고 한다.
그럼 이제 쿠키를 가지고나서 어떻게 로그인을 하냐!
바로 밑의 그림이다!
쿠키의 정보는 항상 서버에 전송된다.
말그대로 사용자가 어떤 요청을 하던간에 쿠키는 계속 서버에 넘어간다.
이는 네트워크 트래픽을 추가적으로 유발된다. (요청마다 몇 가지의 정보가 더 넘어가니깐)
그래서 최소한의 정보만 사용되어야 한다.
그리고 보안에 민감한 데이터(주민번호, 카드번호 등등)는 저장하면 안된다!
쿠키도 결국 자원이기 때문에, 무제한으로 살려두면 그것 또한 비효율이자 낭비다.
그래서, 쿠키는 생명 주기로 세션 쿠키, 영속 쿠키 두 가지로 나뉜다.
세션 쿠키 : Set-Cookie때, 만료 날짜를 생략하면 브라우저 종료시 까지만 유지한다.
영속 쿠키 : Set-Cookie때, 만료 날짜를 입력하면 해당 날짜까지 유지된다.
생성한 쿠키가 관계없는 아무 사이트에서나 전송이 되면 매우 곤란하다.
그래서 쿠키가 전송되는 범위를 설정할 수 있는데, 도메인으로도 필터링을 할 수 있다.
도메인으로 한 번 크게 거르고나서 경로를 설정해서 하위 경로 페이지에만 쿠키가 전달되게 할 수도 있다.
로그인을 하는 방식에는 쿠키도있지만, 세션을 통한 로그인 방법도 있다.
도움을 얻은 곳에서 알게 되었는데, 사실상 쿠키와 세션의 차이에 대해 적혀있었다.
가장 큰 차이점은 쿠키는 클라이언트 자원을 사용하고, 세션은 서버 자원을 사용한다는 것이다.
세션도 결국 쿠키를 사용하지만, 서버의 처리를 받기 때문에 쿠키에 비해 느리다. 그러나? 서버의 처리를 받기에 보안은 우수하다.
그리고 블로그 주인분께서 정말 훌륭한 표를 기록해두셨다
Django에 비해 Spring은 같은 웹을 만들더라도 Http 프로토콜에 대한 지식이 더 요구되는 것 같다.
Django로 개발할 당시에는 로그인에 관한 라이브러리가 굉장히 잘 되어있어서, 클라이언트에서 request.user를 통해서 모든게 해결되었다.
그러나 Spring은 로그인을 구현하기 위해 선행되는 사전 지식이 좀 더 요구되는 것 같다!
이런 것을 하나하나 알아가는 것은 뭔가 개발자로서 건강해진 것 같아서 기분이가 좋다! ㅋㅋㅋ