쿠키 & 세션

동스토리 ㅣ 2020. 6. 26. 10:20

반응형

HTTP 특징

 

1) Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊음

2) Stateless : 클라이언트와 서버가 통신이 한번 이루어지고 끝이나면, 서버는 데이터를 저장하지 않는다.

 

-> 이러한 단점을 보완하기 위해서 쿠키&세션을 사용

 

 

쿠키

 

클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일

- 사용자 인증이 유효한 시간을 명시 가능

- 브라우저가 종료되어도 인증이 유지됨

- response 헤더에 set cookie 속성 사용하면 클라이언트에 쿠키를 만들수 있다.

 

클라이언트 페이지 요청 -> 서버에서 쿠키생성 -> http 헤더에 포함 시켜 응답

 

Set-Cookie: 키=값; 옵션 -> 서버에서 클라이언트(브라우저)한테 쿠키를 저장하라고 명령하는 응답 헤더

 

  • Expires: 쿠키 만료 날짜를 알려줄 수 있습니다.
  • Max-Age: 쿠키 수명을 알려줄 수 있습니다. Expires는 무시됩니다.
  • Secure: https에서만 쿠키가 전송됩니다.
  • HttpOnly: 자바스크립트에서 쿠키에 접근할 수 없습니다. XSS 요청을 막으려면 활성화해두는 것이 좋습니다.
  • Domain: 도메인을 적어주면 도메인이 일치하는 요청에서만 쿠키가 전송됩니다. 가끔 도메인이 다른 쿠키들이 있는데, 이런 쿠키들은 써드 파티 쿠키로 여러분을 추적하고 있는 쿠키입니다. 구글이나 페이스북같은 곳이 써드 파티 쿠키를 적극적으로 사용합니다.
  • Path: 패스를 적어주면 이 패스와 일치하는 요청 요청에서만 쿠키가 전송됩니다.

Cookie: 키=값; 키=값; -> 클라이언트가 서버한테 쿠키를 보내줄 때 사용하는 요청 헤더

 


세션

 

쿠키 기반이지만 쿠키와 달리 세션은 서버 측에서 관리

 

- 서버에서 클라이언트와 구분하기 위해 세션 ID를 부여, 브라우저를 종료 할때 까지 인증상태 유지

- 접속시간에 제한을 두어 일정시간 응답이 없다면 정보 유지가 안되도록 설정 가능

- 사용자 정보를 서버에 두기 때문에 쿠키보다 보안이 뛰어나지만, 세션 값이 많을 경우 서버 메모리를 많이 차지

 

클라이언트 request -> (해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여함)클라이언트 서버 접속 -> 서버에서 세션ID 발급 -> 클라이언트는 세션ID를 쿠키를 이용하여 저장-> 클라이언트가 서버 요청 시 쿠키의 세션ID를 서버에 전달 -> 서버는 세션ID를 통하여 클라이언트 정보 갖고옴-> 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에 응답

 


* 웹 통신간 필요로하는 쿠키, 세션 정보 값으로 인해 발생되는 공격

 

- XSS(Cross Site Scripting) 공격

 

: 게시판 같은 서버와 통신을 하는 동적인 페이지를 생성하기 위해서는 스크립트 언어(PHP, JSP)CGI 프로그램을 이용하여야 하는데 이러한 프로그램은 웹 서버에서 실행되어, 그 결과를 사용자에게 돌려주는 역할

 

Ex) javascript:alert(document.cookie)

 

- 스니핑 공격

 

1) 클라이언트가 서버로 처음 접근(클라이언트 -> 서버)

2) 서버에서 응답 받아, 쿠키를 생성

3) 응답에 쿠키를 포함하여 전송(서버 -> 클라이언트) , 클라이언트의 요청에 대한 서버로부터의 응답

4) 클라이언트 쪽에서 서버의 응답에 실려온 쿠키를 저장함

=> 쿠키 값에 정보가 담겨져 있게 된다면 정보 유출에 피해를 입게된다.

 

- 세션 하이재킹

 

: 시스템 간 연결이 활성화된 상태, 즉 로그인된 상태를 가로채는 것, TCP의 고유한 취약점을 이용해  서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 위조해서 연결된 세션에 잠시 혼란을 준 뒤 자신이 끼어들어 가는 방식

클라이언트 요청 -> 클라이언트 서버 접속 -> 서버에서 세션ID 발급 -> 클라이언트는 세션ID를 쿠키를 이용하여 저장-> 클라이언트가 서버 요청 시 쿠키의 세션ID를 서버에 전달 -> 서버는 세션ID를 통하여 클라이언트 정보 갖고옴-> 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에 응답

 

감사합니다.

 

 

 

반응형

'Security > Application' 카테고리의 다른 글

모의해킹 참고 사이트  (0) 2021.02.17
XSS(Cross Site Scripting)  (0) 2020.08.01
OWASP TOP10  (0) 2020.06.30
HTTP 헤더  (0) 2020.06.26
Burp suite 설치 및 사용법  (0) 2020.05.29