Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Today
Total
관리 메뉴

고리타분한 개발자

세션 본문

JavaScript/Basic Web Concepts

세션

sunlee334 2017. 12. 5. 01:48

목표

  • 세션과 쿠키의 필요성 인지하기
  • 쿠기와 세션의 차이를 이해하기
  • 내가 사용하고 있는 서버언어의 쿠키, 세션 이용방법 찾아보기

세션

  • 쿠키보다 안전하고, 조금 더 많은 정보를 저장할 수 있음
  • 쿠키가 클라이언트 측(웹브라우저)에 이전 통신 정보를 저장하는 것(HTTP 통신은 이전 통신 상태, 정보를 알지 못함): 장바구니, 로그인 정보 등


  • 쿠키 보안 이슈
  1. 사용자의 웹브라우저와 서버가 통신하는 과정에서 중요한 정보(로그인시 아이디 비밀번호)가 왔다갔다하는데 중간에 탈취가능성
  2. 클라이언트 컴퓨터 해킹 - 쿠키 정보 탈취 가능성

  • 세션
  1. (쿠키 방식 + 서버 측 db에 정보 저장) 혼용
  2. 쿠키 방식 - 브라우저 저장(사용자 식별자값만 저장), 실제 값(비밀번호)은 서버 db에 저장, key - value 방식
  • 쿠키 보안 이슈 해결: 식별자값이 탈취된다 하더라도 쿠키보다는 보안이슈가 적게 발생하도록 조치(실제 값이 들어있지않음)

쿠키 확인

  • 직접 구현해보지 않으면 모름
  • 최초(쿠키가 세팅이 되지 않았을 때) HTTP 통신 시 서버가 브라우저에 응답할 때 브라우저에 쿠키를 세팅하라고 함
  • 이후 저장된 정보(쿠키)를 웹브라우저가 요청 시 서버에 보내고 서버는 정보를 확인한 후 응답함(이전 상태 정보 그대로 응답때 요청한 페이지에 표시해서 돌려줌)
  • 확인하기
  1. 크롬 개발자도구 > Network 탭
  2. 구글 요청 날리기(구글 접속)
  3. 응답 파일 목록 중 www.google.com 페이지 파일 클릭 > Response Headers 내 Set-Cookie - 쿠키 세팅

세션 확인

  • 쿠키 확인과 마찬가지임: 쿠키 방식을 쓰기때문에
  • 그러나 쿠키가 이전 상태 정보를 모두 저장했다면, 세션에서 쿠키에는 식별자 정보만 가지고 있음
  • 서버가 브라우저에게 식별자 정보를 던져줌, 이후 브라우저가 서버에 요청할 때에는 식별자 정보만을 넘겨줌
  • 서버는 요청시 받은 식별자 정보를 가지고 정보를 찾은 후(db에 접근) 응답 시 그에 맞는 응답을 함
  • 확인하기
  1. 크롬 개발자도구 > Application 탭
  2. 네이버 접속(서버에 요청)
  3. Application 탭 내 Storage > Cookies > http://www.naver.com 클릭 > Value(식별자값)
    1. 모든 것이 세션을 위한 쿠키가 아닐 수 있으나 동작 매커니즘 확인을 위해 그렇다는 것 알림
  • 정리
  1. 쿠키에 저장된 값 - 사용자가 현재 쓰고 있는 브라우저 식별자 - 같은 브라우저일 경우 그에 맞는 응답을 해줌
  2. 쿠키 저장값(사용자 식별자값) - 서버 db측 db(실제값): key - value 관계
  3. 실제 값이 브라우저에는 저장되지 않기 때문에 크롬의 경우 시크릿창을 켜면 페이스북 로그인이 풀려있음(자동 로그인 되어있던 것이)

결론

  • HTTP는 상태 비저장 프로토콜: 이전 통신에 대한 상태 정보를 저장하지 않음(요청 - 응답만 하는 것: 이전 통신 정보가 무엇이었는지 모름)
  • 쿠키와 세션은 보안의 차이
  1. 쿠키는 클라이언태 측(웹으라우저)에 모든 정보를 저장해두고 요청 시 서버에 건네주는 것
  2. 세션은 클라이언트 측에 사용자 식별자 값만 저장하게 해두고 브라우저가 요청 시 식별자값을 날리면 식별자 값을 통해 실제값 정보를 찾고(db에 저장된) 그에 맞는 응답을 해줄 때 사용
  3. 세션은 쿠키를 이용하지만 중요한 정보(실제값)를 어디에 저장하는가가 쿠키와 다름
  4. 현재 브라우저 로그인 체크
    1. 서버 상에서 세션 스토어 내(세션을 저장하는 공간, 세션 저장 방식에 따라 저장기간이 다름)에 현재 브라우저의 세션이 생성됨
    2. 현재 브라우저 최초 로그인 성공 시(요청 - 응답) 서버로부터 토큰 발급(쿠키로 - 브라우저 저장)받음
    3. 이후 http 통신 요청 시 브라우저 토큰을 날림
    4. 서버는 토큰 확인 후 정보 뽑아낸 후 그에 맞는 페이지로 바꾼 후(로그인 -> 로그아웃) 브라우저에 응답
    5. 브라우저에 유저 정보(비밀번호)를 저장하지 않고도 이후 http 통신 때 계속해서 유저정보를 유지한채로 통신할 수 있음

참고자료

http://jinbroing.tistory.com/76?category=697142


'JavaScript > Basic Web Concepts' 카테고리의 다른 글

쿠키  (0) 2017.11.26
URL / URI / REST API  (0) 2017.11.26
HTTP 통신이란?  (0) 2017.11.26
Comments