HTTP Cookie 를 이해하자!!



1. 정의: 웹서버가 클라이언트에게 전송한 텍스트로 클라이언트에 저장되어 동일한 웹서버에 접속할때 마다 요청헤더에 Cookie: key=value&key=value . . . 형식으로 붙여져서 자동으로 서버에 전달되는 값이다. 


2. 용도: 사용자인증, 세션유지, 사용자정보유지 등에 사용된다.


Session Cookie: 세션의 상태유지를 위한 목적으로 사용되며 웹브라우저가 종료될때 쿠키도 삭제된다. 보통 Session ID를 담고 있어 웹사이트에서 페이지간의 이동에 사용자를 추적할 수 있게 한다. 쿠키의 만료일자를 지정하지 않은 경우 파일로 저장되지 않고 사용자 세션정보의 일부로써 유지된다.

 

Persistent Cookie: 브라우저를 종료해도 사용자 하드디스크에 저장되는 쿠키이다. 이쿠키는  expiration time 동안 클라이언트의 디스크에 저장되며, 사용자가 직접 삭제할 수 도 있다.


3. 쿠키의 단점:  

키는 동일컴퓨터, 동일웹브라우저, 동일사용자계정 세가지가 일치해야 동일 사용자를 제대로 인식할 수 있으며 다음과 같은 취약점을 가지고 있다.


Cookie hijacking: 쿠키가 암호화되지 않은 채널을 통해 전송된다면 네트워크 중간에서 누군가가 내용을 엿볼 수  있거나, XSS 공격을 통해 제3자의 컴퓨터로 전송될 수 있다.


Cookie Poisioning: 쿠키의 내용은 공격자에 의해 변조될 수 있다. 그래서 쿠키에는 Session ID만 저장하고 중요한    정보는 서버의 세션에 저장하여 예방한다.


Cross-site Cooking: 브라우저 취약점을 이용하여 공격자의 사이트에 접속한 사용자에게 다른사이트에서 저장한것 처럼 보이는 쿠키를 저장시킬 수 있다.  이쿠키의 Session ID 정보와 같으 것을 저장하면 사용자가 대상 사이트를 로그인하여 들어가는 순간 공격자도 동일한 Session ID를 사용하여 로그인없이 접속할 수 있다.


Cookie theft: 공격자는 XSS 취약점을 이용하여 자바스크립트로 다른 사용자의 쿠키 정보를 자신의 서버에 전송하도록 할 수있다. 이 경우는 쿠키를 전송할 때 HttpOnly 옵션을 쿠키에 설정하여 예방할 수 있다.


크기제약: 브라우저 마다 다르겠지만 일반적으로 쿠키는  최대 4KB 크기이며, 사이트당 20개, 전체 300개를 브라우저가 관리할 수 있다.


쿠기를 사용하지 않는다면?

접속한 사용자 IP를 추적

쿠키에 저장할 정보를 URL의 쿼리 스트링형태로 전송

HTML 폼의 hidden 필드를 이용

HTTP Authentication

window.name DOM 속성 사용하여 처리할 수 있지만 이러한 방법들이 쿠키보다 탁월히 좋다는 보장이 없다.



4. 쿠키저장위치


설정  > 인터넷 옵션  > 일반 > 설정 클릭



현재위치에 쿠키가 저장된다.  이경로는 운영체제에 의해 파일 숨기기가 설정된 폴더이므로 이 폴더의 내용을 보려면

윈도우7, 윈도우8인경우  탐색기에서  보기 > 옵션 > 폴더및 검색 옵션변경 을 클릭한 뒤

보호된 운영체제 파일 숨기기 체크를 해제해준다.



'보안 > 웹 해킹/보안' 카테고리의 다른 글

[LAB] Secure Cookie  (0) 2013.04.18
방화벽 정리  (0) 2013.04.15
HTTP cookie를 이해하자!!  (0) 2013.04.15
시큐어코딩 실습환경설정 문서  (0) 2013.04.09
List of tools for static code analysis  (0) 2013.04.08
[WebGoat 5.4-17] Web Service  (0) 2013.04.07
블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바