본문 바로가기
JSP/JSP기초

JSP(ch14) 쿠키 요약

by 미눅스[멘토] 2023. 7. 17.
728x90

 

 

쿠키는 세션과 달리 상태 정보를 웹 서버가 아닌 클라이언트에 저장 한다.

- 예를들어 어떤 웹 사이트를 처음 방문한 사용자가 로그인 인증을 하고 나면 아이디와 비밀번호를 기록한

쿠키가 만들어지고 그 다음부터 사용자가 그 퉴 사이트에 접속하면 별도의 절차를 거치지 않고 쉽게 접속할 수 있음

 

 

 

 

 

클라이언트가 서버에다가 뭔가 요청을하면 세션이 생성되면서 세션의 아이디가 쿠키에 들어감 기본적으로

 

반면에 웹 브라우저가 접속했던 웹 사이트에 관한 정보와 개인 정보가 기록되기 때문에 보안에 문제가 잇음

 

 

 

 

 

 

 

1. 쿠키 생성 단계 : 주로 웹 서버 측에서 생성.생성된 쿠키는 응답 데이터에 함께 저장되어 웹 브라우저에 전송됨

2. 쿠키 저장 단계 : 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보관.쿠키는 종류에 따라 메모리나 파일로 저장됨

3.쿠키 전송 단계: 웹 브라우저는 한 번 저장된 쿠키를 요청이 있을 때마다 웹서버에 전송.웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 작업을 수행할 수 있음.

 

 

 

분홍색 체크해둔것 : 많이 쓰임

 

 

 

쿠키와 세션의 차이

 

구분 쿠키 세션
사용 클래스 Cookie클래스 HttpSession인터페이스
저장 형식 텍스트 형식 Object형
저장 장소 클라이언트 서버(세션 아이디만 클라이언트에 저장)
종료 시점 쿠키 저장 시 설정(설정하지 않을 경우 웹 브라우저 종료 시 소멸) 정확한 시점을 알 수 없음
리소스 클라이언트의 리소스 사용 서버의 리소스 사용
보안 클라이언트에 저장되므로 사용자의 변경이 가능하여 보안에 취약 서버에 저장되어 있어 상대적으로 안정적

 

가장큰 차이는 저장장소이다

 

 

 


 

cookie01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Cookie</title>
</head>
<body>
<% //스크립틀릿
	Cookie[] cookies = request.getCookies();
	out.print("cookies.length :" + cookies.length + "</p>");
	for(int i=0; i<cookies.length; i++){
		out.print("<p>"+cookies[i].getName()+" : " +
						cookies[i].getValue() + "</p>");
	}
	out.print("<p>session.getId() : " + session.getId() + "</p>");
%>
	<!-- 
	요청URL : cookie01_process.jsp
	요청파라미터 : {id=master, passwd=java}
	 -->
	<form action="cookie01_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id"></p>
		<p>비밀번호 : <input type="text" name="passwd"></p>
		<p><input type="submit" value="전송" /></p>
	</form>
</body>
</html>

 

 

cookie01_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>

<%//스크립틀릿
//요청 URL : cookie01_process.jsp
//요청파라미터 : {id=master, passwd=java}
	String user_id = request.getParameter("id");	//admin
	String user_pw = request.getParameter("passwd");	//java

	if(user_id.equals("admin")&&user_pw.equals("java")){
		
		//Cookie 객체 생성
		//userId : 쿠키name, user_id(admin) : 쿠키 value
		Cookie cookie_id = new Cookie("userId",user_id);
		response.addCookie(cookie_id);
		
		//userPw : 쿠키name, user_pw(java) : 쿠키  value
		Cookie cookie_pw = new Cookie("userPw", user_pw);
		//response 내장 객체를 통해 쿠리르르 리턴받음
		response.addCookie(cookie_pw);
		out.print("<p>쿠키 생성 성공!</p>");
		out.print("<p>" + user_id + "님 환영합니다.</p>");
		
	}else{
		out.print("<p>쿠키 생성 실패!</p>");
	}
	
%>

	<p><a href="cookie01.jsp">cookie01.jsp로 이동</a></p>
	<!-- 
	csrf : cross side request fergery(스프링 시큐리티)
	 -->
</body>
</html>