쿠키(Cookie)
쿠키는 웹 브라우저에서 저장할 수 있는 작은 데이터이다. 즉, 클라이언트에서 갖고있는 데이터이다. 개발자가 프로그램에 필요한 정보를 임시적으로 저장할 수 있다. 쿠키 값은 만료날짜를 지정하여 언제까지 데이터가 유지될 지를 결정할 수 있다. 쿠키는 Key-Velue 쌍으로 이루어져 있다. 이러한 쿠키는 클라이언트 측에서 저장하고 있다가 웹 서버 접속 시 저장된 쿠키값을 포함하여 통신을 한다. 때문에 서버측의 부하를 덜 수 있다. 대표적으로 쿠키가 사용될 때는 사이트 접속 시 '오늘 하루 열지 않기'를 체크할 때 이다. 이때 해당 버튼을 클릭하면 오늘 하루 기간의 쿠키 값이 생성되어 브라우저에 저장된다. 그러면 하루 기간 동안 저장된 쿠키값을 웹 서버 접속 때마다 보내주어 해당 팝업이 안보이게 된다.
세션(Session)
세션은 HTTP가 TCP 프로토콜이기 때문에 필요하다. TCP는 Connection Oriented(연결 지향 통신)을 사용한다. 연결 지향 통신은 특정 정보를 주고 받으면 연결이 된 것으로 착각하게 된다. 이 때 웹 서버와 웹 브라우저가 서로 약속된 문자열을 보내야 하는데 이것이 세션이다. 만약 로그인 사용자의 세션 정보가 갈취되면 세션 로그인 과정이 없어도 연결된 것으로 인식하게 되는 것이다. 즉, 통신 중 클라이언트와 서버가 연결된 상태를 유지할 수 있도록 해주는 것이 세션이다. 세션은 클라이언트가 서버에 접속 요청 시 해당 클라이언트의 세션값을 서버가 생성하고 저장하여 클라이언트에게 전송한다. 그러면 클라이언트는 응답 헤더에 받은 세션 값을 포함하게 된다. 이 세션 값은 브라우저 종료 시 삭제되어 다시 접속하면 웹 서버에서 새로운 세션 값을 생성하고 보내주는 형태로 연결 상태를 관리한다.
쿠키값으로 접근 권한 관리를 하면 안되는 이유
쿠키값은 클라이언트의 웹 브라우저에 저장된 데이터이다. 즉, 클라이언트가 임의로 변경할 수 있다는 것인데, 이 떄 쿠키값으로 권한 관리를 한다면 악의적인 사용자가 쿠키값을 수정하여 더 상위 권한 또는 다른 사람의 권한을 이용하여 접근할 수 있는 것이다.
Cookie와 Session의 차이점
구분 | Cookie | Session |
저장 위치 | 클라이언트 | 서버 |
저장 형태 | Text | Object |
종료 시점 | 쿠키 저장 시에 종료 시점을 설정하여 종료 시점이 되면 삭제된다. 종료 시점을 설정하지 않으면 세션이 종료될 때 쿠키값도 삭제된다. | 정확한 종료 시점을 알 수 없다. 민감한 페이지, 보안이 필요한 페이지의 경우 세션 유지에 시간 제한을 두는 경우도 있다. 예로 은행 업무 사이트 접속 시 로그인 상태 유지 시간이 있다. |
용량 | 개수와 용량에 제한이 있다. | 용량 제한이 없다. |
'Network, Security' 카테고리의 다른 글
ElectroRAT 악성코드 [트로이목마] (0) | 2021.01.19 |
---|---|
HTTP(Hyper Text Transfer Protocol) (0) | 2021.01.17 |
OSI(Open System Interconnection) 7계층 (0) | 2021.01.15 |
세대별 컴퓨터 바이러스 분류 (0) | 2021.01.14 |
SAML(Security Assertion Markup Language), SSO(Single Sign On) (0) | 2021.01.10 |