• 검색 결과가 없습니다.

07.Cookie 의 사용

N/A
N/A
Protected

Academic year: 2021

Share "07.Cookie 의 사용"

Copied!
13
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Chapter Chapter 신한대학교 2015 봄학기 클라이언트/서버 프로그래밍 고덕윤 maniara.k@gmail.com .

Cookie 의 사용

클라이언트가 갖고 있는 전역 데이터 7

(2)

우리가 배웠던 쿠키의 사용 사례

세션 ID를 저장하는데 사용했었죠.

01

www.naver.com #0AAB6C8DE415 www.google.com www.daum.net Response : #0AAB6C8DE415 Request : #0AAB6C8DE415 Cookie

(3)

쿠키의 특징

02

• 클라이언트에 저장되는 작은 타입의 데이터이다. • 서버가 쿠키를 설정 하면, 클라이언트는 요청(request)시 마다 쿠키의 내용을 모두 보낸다. • 일반적으로 브라우저가 종료되면, 모든 쿠키는 지워진다. • 별도의 설정을 통해 쿠키를 저장할 수 있다.

(4)

쿠키 사용법 1

• 쿠키의 저장

• 쿠키의 호출

03

Cookie[] cookieList = req.getCookies();

for(Cookie c : cookieList){

if(c.getName().equals("loged_in_id"))

{

String id = c.getValue();

System.out.println("Hello "+id);

} }

Cookie cookie = new Cookie("loged_in_id" , req.getParameter("id"));

cookie.setMaxAge(30*60); resp.addCookie(cookie);

(5)

쿠키 사용법 2

• 쿠키의 삭제

04

Cookie[] cookieList = req.getCookies();

for(Cookie cookie : cookieList)

{ if(cookie.getName().equals("loged_in_id")) { cookie.setValue(null); cookie.setMaxAge(0); resp.addCookie(cookie); } }

(6)

쿠키는 보안에 취약하다.

• 쿠키는 사용자가 마음껏 수정할 수 있기 때문에

• 중요한 정보는 쿠키에 저장하지 않는 것이 좋음

• 구글이 사파리에 저장된 모든 쿠키를 통해 광고를 함

• Java script 사용으로 쿠키 내용을 브라우저에 모두 보여줄 수 있음

• 임시 서버를 설치하여 쿠키정보를 빼낼 수 있음.(스니핑)

05

(7)

“로그인 상태 기억하기” 구현방법

• 고객의 아이디와 체크여부를 쿠키에 저장함

• 다른 사람의 아이디를 알면, 임의로 쿠키에 아이디를 추가하여 누구나 그 계정으로

로그인이 가능함

• 고객의 아이디와 체크여부를 세션에 저장함

• 브라우저 종료와 동시에 session id가 사라져서 사용 불가함

• 데이터베이스에 unique token과 아이디를 저장

• Unique token을 쿠키에 저장함

• 스니핑에 의한 보안 유출이 가능하므로

• 사용자가 접속할 때 마다 token을 교체함

• 일정 기간을 두고 저장함  DB메모리 낭비를 막기 위해!

06

(8)

방법 자세히 보기

07

사용자 로그인 사용기한 설정 DB에 토큰과 ID 저장 쿠키에 token 저장 사용자 접속 쿠키에서 토큰을 가 져옴 DB에서 토큰에 해당하는 ID 가져옴 ID로 Login 처리함 토큰 변경함

(9)

어마어마한 실습

1. 지난주 숙제를 모두 마무리 합니다.

2. 회원가입, 로그인 기능을 구현합니다.

1.

https://github.com/maniara/CSP_Class/tree/master/ProjectIntroductionW

ithLogin

참고

2. 아이디 존재여부를 체크하는 기능을 구현합니다. (HW2-1)

3. Session 과제를 수행합니다. (HW2-2)

1. 로그인 성공시 세션에 사용자의 ID를 기억합니다.

2. 팀원조회 화면에서 사용자의 ID를 보여준다.

세션 파트

08

(10)

계속되는 어마어마한 실습

1. DataObject(UserLoginToken) 를 하나 만듭니다.

1. 토큰, 사용자 ID, 사용기한으로 구성됩니다.

2. 사용기한은 (현재날짜 + 30일)입니다.

2. 로그인에 성공하고 로그인 유지하기가 체크되어 있으면, (HW2-3)

1. 쿠키에 UUID를 생성하고“token”이라는 이름으로 저장합니다.

1.

저장 기간은 30일로 합니다.

2.

UUID 생성 : UUID.randomUUID().toString()

2. DataStore 에 UserLoginToken을 저장합니다.

3. index.html을 연결합니다.

로그인 기억하기 구현

09

(11)

실습! 실습!

3. 시작페이지를 하나 만듭니다. (HW2_4)

1. web.xml에 welcome page를 entry로 합니다.

2. entry servlet을 만듭니다.

1. 쿠키를 읽습니다.

2. 저장된 쿠키(token)가 있는 경우 DataStore에 token에 해당하는 id를 물어봅니다.

3. 사용 가능한 날짜가 맞는지 체크합니다. (HW2_41)

4. 쿠키와 DataStore 의 현재 token을 새로운 UUID로 변경합니다.(HW2_42)

5. Id를 잘 얻었으면, 세션에 id를 등록하고 index.html을 연결합니다.

6. 쿠키에 저장된 내용이 없으면, login.html을 연결합니다.

10

entry index.html login.html 토큰이 있으면? 토큰이 없으면?

(12)

로그아웃!

4. index.html 에 logout 기능을 넣습니다.(HW2_5)

1. Logout servlet 가 호출되면

1. 세션을 종료합니다.(session.invalidate())

2. Token 쿠키를 지웁니다.

3. DataStore에서 token에 해당되는 데이터를 지웁니다.

11

(13)

과제제출

http://shu-csp-hw.appspot.com/

참고

• 아이디 중복체크가 없으니 주의할 것.

• 기한 : 5/10 23:59까지

• 제출방법 : 기존의 app engine url과 github에 덮어쓰기.

• 메일보내기 : 성공한 HW의 아이디를 적어 보낸다.

• 과제 보내는 법은 사이트 자료실 참고

• 만약 지난 숙제를 제출하지 않았다면,

• 모두 수행한 후, app engine url과 github url을 메일로 보낸다.

• 시험 후 다음 수업시간은 과제 실습을 수행합니다.

• 수업 전에 구현해보고, 수업시간엔 막힌 부분만 질의 합니다.

참조

관련 문서

- 자유주의와 부르주아의 권력 도전을 방어 - 노동계급의 사회주의적 저항과 혁명을 방지 국가가 노동계급의 복지제공자 역할 수행 노동자는 군주에게

– 두 사람의 질량이 다른 상황에서 한 사람이 힘을 작용하는 경우 그 힘을 두 사람의 사이의 상호작용으로 이해하기보 다는 힘을 받는 대상의 질량이 다르기 때문에

[로그인] 로그인 화면으로 이동하 여 가입한 회원 아이디와 비밀번호 로 로그인을 하시기 바랍니다.. 사업자 회원 등록이 완료되면

3D 모델 작성 도면 시공 계획 사업비 확인. 해석

이산화탄소 소화설비 시스템 이산화탄소 소화설비 시스템... 전기 개방식

방열기 개폐에 의해 방열량을 임의로 조절, 다른 방열기에 영향 을 미치는 일이 적다... 배관이 가늘고, 방열기는 적어도

- 연쇄법칙을 기억하기 위하여 나뭇가지 그림을 그리는 것이 도움이 된다. 또 로부터 독립변수

 피보험자가 소유하지 않고, 조업하지도 않고, 통제하지 않는 다른 사람의 사업장에서 손실이 발생하여 피보험자 의 사업이 중단될