• 검색 결과가 없습니다.

07.Cookie 의 사용

N/A
N/A
Protected

Academic year: 2021

Share "07.Cookie 의 사용"

Copied!
13
0
0

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

전체 글

(1)

Chapter Chapter 신한대학교 2015 봄학기 클라이언트/서버 프로그래밍 고덕윤 [email protected] .

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 모델 작성 도면 시공 계획 사업비 확인. 해석