쿠키 VS 세션
- 쿠키는 세션 관리, 개인화, 트래킹에 사용되고 세션은 쿠키를 이용
-
쿠키는 Header에 정보를 저장해서 보냄
-
쿠키는 클라이언트에 저장, 세션은 서버에 저장
1.요청 : 웹 클라이언트가 서버에 요청을 보내면 서버는 클라이언트를 식별하는 session id 생성
2.세션키 생성
3.session id로 HttpSession 생성(key, value 를 저장)
4.session id를 저장하고 있는 쿠키 생성
5.클라이언트에 응답(session 아이디를 가진 쿠키 전송)
6. 웹 클라이언트 session id를 가진 쿠키 서버에 전송
7. 서버는 쿠키의 session id로 HttpSession 찾기
세션
특징
-
Session Id 는 브라우저 단위로 저장, 브라우저 종료 시 제거
-
로그아웃 시 새로운 Session 생성
-
로그인 여부, 닉네임 등의 정보를 Session 에 담으면 정보를 DB에 조회할 필요 없어 효율성 증가
보안
-
HTTPS 통신을 위해 Session 옵션 secure = true 로 설정
-
Httponly = true JS를 통해 Session 쿠키 사용할 수 없도록 강제 설정
1. 세션 생성 : 서버에 생성된 세션 있으면 반환, 없으면 새로 만들어서 반환
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);
2. 세션에 값 저장 : name, value 쌍으로 객체 Object를 저장하는 메서드
setAttribute(String name, Object value)
session.setAttribute(이름, 값)
session.putValue(이름, 값);
3. 세션에 저장된 값 조회 : getAttribute(String name) String value = (String)session.getAttribute("name"); Object 변수 = session.getValue(이름);
4. 세션 값 삭제 removeAttribute(String name)
5. 세션 유지 시간(서버에 접속한 후 서버에 요청을 하지 않는 최대 시간) 설정 : 기본 30분 유지 <session-config> <session-timeout>30</session-timeout> </session-config>
쿠키
-
서버가 사용자의 웹 브라우저에 저장
-
서버 요청이 있을 때 다시 서버로 보내주는 문자열 정보
-
웹 페이지 방문 시 방문 기록 등 브라우저에서의 정보들이 저장된 텍스트 파일
-
데이터 형태 : Key, Value 형태 String
-
4KB 이상 저장 불가 (작은 값 보관 도움)용도
-
로그인 시마다 다시 로그인 안 하고 사용자 정보 유지
-
최근 검색 정보 광고 추천
-
쇼핑몰 장바구니
-
일정 기간 동안 팝업 다시 보지 않기쿠키 종류
-
기술적 쿠키 : 이용자 구분 기능 수행(검색 주체가 사람인지 어플리케이션인지)
-
분석 쿠키 : 정보 수집(검색 내용, 빈도 등등)
-
광고 쿠키 : 광고 게제
쿠키 제어 옵션
-
Secure : HTTPS 프로토콜 상 암호화된 요청일 경우 전송
-
HttpOnly : Cross-site 스크립트 공격 방지,
-
Domain : 쿠키가 전송되게 될 호스트
-
Path : 쿠키는 Header로 전송, 웹 서버의 특정 URL에 대해서만 쿠키를 전송, 전송범위 설정가능
-
SameSite : 위조 공격에 대한 보호 방법Strict : SameSite 간의 요청에서만 쿠키 전송 허용 → 보안 강력, 편의성은 떨어짐Lax : 기본적으로 Strict, Http get방식 + <a href=””>, <link rel=”prerender”>통한 접근은 허용,None : SameSite 요청 , Cross site 요청 모두 전송 허용 → 보안 취약 . 해당 속성은 HTTPS 프로토콜 하에서 Secure 속성과 함께 사용해야 함1. Cookie 객제 생성
Cookie 변수 = new Cookie(이름, 값);
Cookie cookie = new Cookiew("name", "kaya");
2. 쿠키 저장 : 쿠키 객체를 웹 브라우저로 보내기
response.addCookie(cookie);
3. 쿠키 조회 : 쿠키는 여러개의 데이터가 전송됨으로 배열로 값을 받음
Cookie[] cookies = request.getCookies(); getCookieValue() //쿠키에 저장된 값을 가져옴 cookie.getName() //쿠키에 저장된 데이터 값에 대한 이름을 가져오는 메서드
cookie.getValue() // 해당 이름에 저장된 데이터 값을 가져옴
Cookie.setMaxAge(초);//유효기간 설정 -쿠키가 저장되는 기간, 브라우저 종료시 쿠키 사라짐
4. 쿠키에 저장 텍스트:
-
영문만 저장 가능
-
한글은 URL인코딩 사용
String 변수 = URLEncoder.encode(값, 인코딩 이름); //인코딩
String 변수 = URLDecoder.decode(값, 인코딩 이름); //디코딩
request.setCharacterEncoding("utf-8"); //요청에 텍스트 인코딩 설정
response.setCharacterDecoding("utf-8"); //요청에 텍스트 디코딩 설정
'일기장' 카테고리의 다른 글
n 번째 원소까지 (0) | 2023.08.01 |
---|---|
카운트 업 (0) | 2023.08.01 |
IP Address (0) | 2023.08.01 |
#3. AWS를 사용하기 위한 도구에 대한 기초 (0) | 2023.07.31 |
2. AWS 이해하기 위한 클라우드와 네트워크의 구조 (0) | 2023.07.29 |