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 |
시큐어코딩 실습환경설정 문서 (0) | 2013.04.09 |
List of tools for static code analysis (0) | 2013.04.08 |
[WebGoat 5.4-18] Admin Functions (0) | 2013.04.07 |