쿠키 : 웹 브라우저가 보관하는 데이터
- 웹 브라우저, 웹 서버 양쪽에서 생성가능
- JSP 에서 사용하는 쿠키 : 웹 서버에서 생성하는 쿠키
쿠키를 사용하면 웹 서버와 웹 브라우저가 필요한 값을 공유하고 상태를 유지 할 수 있음
자주 쓰이는 정보를 쿠키로 저장하곤 한다.
1. 쿠키 생성 : 웹 브라우저가 웹 서버에 요청을 보낼 때 쿠키를 응답 데이터의 헤더에 저장해서 함께 전송한다.
2. 쿠키 저장 : 웹 브라우저가 쿠키를 메모리나 파일로 쿠키저장소에 저장한다.
3. 쿠키 전송 : 요청이 있을 때 마다 저장한 쿠키를 웹 브라우저 -> 웹 서버로 전송
* 쿠키 구성요소 : 이름,값,유효시간,도메인,경로
* 쿠키 생성
Cookie 생성자 이름과 값을 인자로 호출 해서 새로운 객체 생성
response 기본객체의 addCookie() 메서드 호출
웹 브라우저에 쿠키 정보를 전송한다
※쿠키는 실제로 Set-Cookie 응답 헤더를 통해서 웹 브라우저에 전달되기 때문에 버퍼가 플러시 된 이후에는 새로 추가할 수 없다. 따라서 쿠키는 출력버퍼를 플러시하기 전에 추가해야 한다.
* 쿠키 값 변경
request.getCookies() 메서드로 쿠키 배열을 얻어온다
같은 이름의 쿠키를 새로 생성 후 응답 데이터로 보낸다
※쿠키가 존재하지않으면 생성되므로 반드시 같은 이름의 쿠키 존재여부 확인
* 쿠키 삭제
Cookie 클래스의 setMaxAge() 메서드를 인자 값 0으로 호출 후 응답 데이터로 보낸다
※쿠키도메인이 쿠키를 생성한 서버의 도메인을 벗어나면 웹브라우저는 쿠키를 저장하지 않음
ex : javacan.somehost.com에서 쿠키를 생성했을 때
쿠키 도메인 - 상위 도메인 지정 somehost.com -> 생성
- 지정하지 않음 -> 생성
- 다른 도메인 지정 otherdomain.com -> X
이유: 다른 서버에서 쿠키 값을 변경할 수 있다면 보안이 뚫리게 되므로
웹 브라우저는 현재 서버에서 다른 도메인에 대한 쿠키 생성을 허용하지 않음
* 쿠키 경로(경로: URL에서 서버 주소 이후 부분)
Cookie.setPath() 메서드
경로 지정시 웹 브라우저는 지정한 경로나 그 하위 경로에만 쿠키를 전송
경로를 지정하지않으면 쿠키를 생성한 경로나 그 하위경로에서만 전송됨
=>일반적으로 쿠키는 웹 어플리케이션에 포함된 다수의 jsp와 서블릿에서 사용하기 때문에, 경로를 "/"로 지정(도메인의 모든 경로로 전송)
* 쿠키 유효시간
Cookie.setMaxAge() 메서드 사용. 초 단위로 지정
유효시간 지정하지 않으면 웹 브라우저 종료 시 쿠키 삭제
유효시간 지정하면 웹 브라우저를 종료해도 쿠키를 삭제하지 않고 유효시간 동안 보관
▶쿠키를 활용해서 클라이언트에서 아이디 기억하기 기능, 자동 로그인 기능 구현 가능
아이디를 평문 형태로 쿠키 값으로 사용하면 보안에 큰 문제가 생긴다(쿠키 값을 변경해서 다르 아이디로 서버에 접근 할 수 있게 된다)
쿠키에 아이디를 저장할 때에는 다양한 암호화 방식을 혼합해서 저장한다.
'Web > JSP' 카테고리의 다른 글
[Tomcat] 콘솔 한글 깨짐 해결 (1) | 2020.12.24 |
---|---|
[JSP] Session 기본 개념 (0) | 2020.02.27 |
[Tomcat] cookie domain error (0) | 2020.02.26 |
[Error] java.lang.NoSuchMethodError (0) | 2020.02.24 |
[Tomcat] 톰캣(tomcat) 설치 (0) | 2020.02.11 |