쿠키
정의 - 웹 서버에게 사용자에 관한 파일을 사용자 컴퓨터에 저장하도록 허용하는 장치로 브라우저 디렉터리 하부에 저장된다. 일반적으로 배너 광고를 회전시키기 위해 사용되기도 하지만, 사용자가 쓰고 있는 브라우저의 형식 또는 그 웹 사이트에 이미 제공했던 다른 정보에 기초를 두어 서버에서 보낼 웹 페이지들을 사용자에게 맞추는 데에도 사용된다.
쿠키는 5개의 구성요소를 가지고 있다. 이름과 같의 쌍을 제외한 다른 구성 요소는 모두 쿠키의 유효 여부를 판단하는데 사용된다.
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure (expire, pate, domain 등은 예약어)
NAME=VAULE; -> 실제 쿠키의 내용을 입력하는 부분으로 이름과 같이 쌍으로 구성된다. VALUE는 언제나 문자열로 처리된다.
expires=DATE; -> expires는 쿠키가 유효한 기간을 입력해주는 곳으로 유효 기간이 지난 쿠키는 자동으로 지워진다. 실제로 특별히 기간을 명시하지 않았을 경우 세션이 끝나면 자동 소멸되므로 생략할 수 있다. 날짜의 형식은 RFC 822, RFC 850, RFC 1036, RFC 1123에서 권고한 양식(Wdy, DD-Mon-YYYY HH:MM:SS GMT)을 따른다. 만일 특정 날짜 값이 주어지지 않으면 세션이 종료되는 순간 쿠키 값은 사라진다.
domain=DOMAIN_NAME;
도메인 정보는 쿠키가 유효한 호스트를 지정할 때 사용되는 것으로 지정된 도메인 이외의 호스트에서는 이 쿠키의 값을 참조할 수 없다. 단, 주의할 것은 여기에 입력되는 도메인 이름에는 최소한 2개 이상의 점(.)이 있어야 한다. 특정한 값이 주어지지 않으면 쿠키 입력 값으로 서버의 호스트 이름이 입력된다.
path=PATH;
경로 정보는 쿠키가 유효한 경로를 지정하기 위한 것으로 일단 도메인 정보를 확인한 후 쿠키가 유효한 경로를 다시 한 번 확인하게 된다. 경로는 계층적 구조의 디렉터리와 유사하게 상위 디렉터리가 하위 디렉터리를 포함하게 된다. 예를 들어 /board라고 설정된 쿠키는 /board 디렉터리뿐만 아니라 /board/upload 디렉터리에서도 유효하게 된다. 기본 값은 쿠키를 설정한 페이지가 있던 디렉터리로 지정된다.
Secure
쿠키의 마지막에 secure 태그가 설정되면 실제로 쿠키의 정보가 암호화되어 저장된다. 그러나 이것은 그 호스트가 SSL을 지원할 때만 유효하며 그 외에는 무시된다.
HTTP 헤더에는 쿠키의 Set-Cookie 헤더가 명시되어 있다. 즉, HTTP 헤더를 생성하는 를 작성하면 원하는 내용을 쿠키에 입력하는 것이 가능하다.
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain; secure
*cgi - 사용자의 요구를 응용프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법.
웹페이지를 요청할때 웹페이지의 양식에 내용을 기재하여 보냈을때 웹 서버는 양식 정보를 응용프로그램에 전달하고, 데이터를 처리하고 필요에 따라 확인 메시지를 보내주는 방법을 CGI라고 부르는다. HTTP 프로토콜의 일부로 이를 대안하기 위해 ASP를 쓴다. ASP는 웹 페이지에 끼워 넣어진 일종의 스크립트로서 그 페이지가 보내지기 전에 서버에서 실행된다.
세션
SessionID은 서버에서 자체적으로 생성한 세션 키를 브라우저로 전송하고 이를 기반으로 사용자의 인증 여부를 판단하는 것이다. 이는 사용자 PC에서 쿠키의 값을 조작할 수 있다는 단점을 보완하기 위한 것으로 세션을 이용할 경우 서버에서 요구하는 정보를 임의로 조작할 수 없다는 장점을 지니고 있다.
애플리케이션별 세션 ID 변수명
애플리케이션 | 세션 ID 변수명 |
IIS | ASPSESSIONID |
TOMCAT | JSESSIONID |
PHP | PHPSESSIONID |
Cold Fusion | CFID, CFTOKEN |
기타 | JServerSeesionID JWSESSIONID SESSID SID Session_id |
* 세션 역시 쿠키라고 할 수 있다. 큰 차이점은 주요한 정보를 클라이언트 측에 저장하는 것이 쿠키라면 세션은 중요한 정보를 서버 측에 저장하고 이에 대한 랜덤하고 유일한 값을 세션 아이디로 생성하게 된다. 서버는 이를 쿠키 값으로 클라이언트에 전송하게 된다. 만약 세션 아이디가 추측 가능하거나 가로채일 수 있으면 사용자의 정보 또는 권한이 노출 될 수 있다.
출처: 웹 해킹 패턴과 대응 (책) , 텀즈(http://terms.co.kr/script.htm)
'컴퓨터' 카테고리의 다른 글
악성코드 제작 및 분석 실습 (0) | 2012.07.23 |
---|---|
문자열 검색하여 파일 찾기 (0) | 2012.01.20 |
공백 노드를 걸러내는 방법. (0) | 2011.02.01 |
Ajax 1 (0) | 2011.01.29 |
eth0이 인식하지 못할 때. (0) | 2010.12.01 |
댓글