쿠키란?
– 쿠키는 클라이언트(웹브라우저)에 저장되는 간단한 정보를 의미.
– 쿠키는 웹서버와 웹브라우저 양쪽에서 생성할 수 있으며,
– 웹서버는 웹브라우저가 전송한 쿠키를 사용해 필요한 데이터를
읽어올 수 있다.
– 쿠키는 그 크기가 하나에 4KB 이하로 제한이 되어 있으며,
총 300개까지 정보를 저장할 수 있다.
따라서,최대로 저장가능한 쿠키의 용량은 1200KB 즉 1.2MB
쿠키 종류
– 하드에 저장되는 쿠키
– 클라이언트의 메모리에 존재하는 쿠키 – JSessionId
(브라우져가 켜져있을 때는 항상 존재 )
쿠키 설정 절차 및 동작방식
– 클이 처음 서버에 접근하면 서버는 서블릿을 통해 클에 쿠키를
설정한다.
– 후에 사용자가 그 사이트를 다시 방문하는 경우 웹브라우저는
쿠키 정보를 서버에 전달한다.
– 서버는 이 쿠키 정보를 이용해 적절한 작업을 수행한다.
1) 쿠키 생성 단계
먼저 쿠키를 생성-서블릿/JSP에서 쿠키는 웹서버 측에서 생성
한다. 이렇게 생성된 쿠키는 응답 데이터에 함께 저장되어 전송
된다.
ex) COOKIE ck=new COOKIE(“id”,”swan”);
2) 쿠키 속성 부여 및 저장 단계
웹브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에
보관한다. 쿠키 종료에 따라 메모리나 파일로 저장된다.
ex) response.addCOOKIE(ck);
3) 쿠키 전송 단계
웹브라우저는 한번 저장된 쿠키를 매번 요청이 있을 때마다
웹서버에 전송한다. 웹서버는 웹브라우저가 전송한 쿠키를
사용해서 필요한 작업을 수행한다.
일단 웹브라우저에 쿠키가 저장되면, 쿠키가 삭제되기 전까지는
매번 웹 서버에 전송된다. 따라서 웹어플리케이션을 사용하는
동안 지속적으로 유지해야 하는 정보는 쿠키를 사용해 저장하면
된다.
cf) 쿠키를 이용한 아이디 저장하기
… 로그인 하는 사이트를 보면 아이디 기억하기 기능을 제공하는
경우가 있다. 아이디 기억하기 기능은 쿠키를 사용해 구현할
수 있다.
사용자가 로그인에 성공하면 아이디를 값으로 저장하고 있는
쿠키의 유효시간을 한달 정도로 여유롭게 잡아서 생성한다.
그러면 웹브라우저를 닫아도 유효시간이 충분하기 때문에,
다음 브라우저를 열 떄 아이디를 저장하고 있는 쿠키를 사용할
수 있다.
따라서 웹프로그램은 아이디 쿠키가 존재할 경우 쿠키의 값을
로그인 폼에 출력해주면 암호 기억하기 기능이 구현된다.
쿠키의 구성 요소
형태 : 웹서버가 웹브라우저에 전달하는 쿠키를 설정할 때
Set-COOKIE : name=value ; expire=date ; path=path; domain=domain; secure
1) 이름 : 각 쿠키를 구별하는 데 사용되는 이름
2) 값 : 쿠키의 이릅과 관련된 값
3) 유효기간 : 쿠키 유효 기간. expire을 기술하지 않으면 현재 웹브라우저가 실행되는 동안만 유효함
4) 도메인: 쿠키를 전송할 도메인
5) 경로: 쿠키를 전송할 요청경로
쿠키 이름 및 값에 대한 규칙(RFC2109규약)
1) 쿠키 이름은 아스키코드 알파벳과 숫자만 포함할 수 있다.
2) 콤마(,), 세미콜론(;), 공백(”) 등의 문자는 포함할 수 없다.
3) $로 시작할 수 없다.
…따라서 위와 같은 문자들이 포함되도록 하기 위해서는 반드시
인코딩 처리를 해줘야 한다.
ex) COOKIE c=new COOKIE(“name”,
URLEncoder.encode(“백성애”));
==> 대신 꺼내올 떄는 URLDecoder.decode(cks[i].getValue());로 꺼내야 함.
*******************************************************
cf> 쿠키보다 세션을 사용하는 이유
…세션이 쿠키보다 보안에 앞서기 때문.
쿠키 이름과 데이터는 네트워크를 따라 전달되기 때문에
일반적인 http프로토콜을 사용할 경우 중간에 누군가 쿠키의
값을 읽어올 수 있다.
하지만 세션은 서버에만 저장되기 때문에 중요한 데이터를
저장하기에 알맞다.
또한 브라우저가 쿠키를 지원하지 않을 경우 세션을 사용.