이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:










작성자:JohnG
편빕자:엔시스



JohnG입니다.
지난 포스팅(웹,HTTP 이해(1))을 이어 두번째 글 올립니다.
첫번째 글은 아래 URL에 있으니 참조 하시길 바랍니다.
웹,HTTP 이해(1) : http://boanin.tistory.com/101

먼저 이번 글 역시 저자 James F.Kurose and Keith W.Ross 의 computer networking (컴퓨터 네트워킹_3판)에서 발췌 및 정리 함을 미리 알려드립니다.

computer networking
ISBN : 89-450-0601-X
(89-450-0601-X 를 검색하시면 도서 정보를 얻으실 수 있습니다.)

쿠키 (사용자와 서버 간의 상호작용)
Cookie
: 사용자에 대한 정보를 저장합니다.
: 사용자의 ID나 PW 그리고 각 개인정보 등을 저장할 때도 있습니다.
: 서버와 클라이언트간의 특정한 정보를 주고 받기 위한 파일이라 정의할 수 있습니다.

Cookie를 이용한 사용한 기술의 요소
: HTTP 응답 메시지 쿠키 헤더 라인
: HTTP 요청 메시지 쿠키 헤더 라인
: 사용자의 브라우저에 사용자 종단 시스템과 관리를 지속시키는 쿠키 파일
: 웹 사이트의 후단 데이터베이스


쿠키가 어떻게 쓰이는지는 가상 시나리오를 만들어 설명하도록 하겠습니다.
광적인 웹 서핑을 즐기는 JohnG는 오늘도 www.Johnwebsite.com에 접속했습니다.
하지만 너무 자주가다보니 접속할때마다 일일이 ID를 쓰는것이 싫었는지 입력 박스 밑의 ID저장이라는 체크 박스를 누른 후 접속을 했습니다.
다음번 접속할때마다 홈페이지에는 미리 JohnG의 아이디가 적혀 있습니다.
이제는 비밀번호만 입력하면 로그인이 될것입니다.

위의 시나리오에서의 쿠키 사용은 ID저장 체크 박스를 누르고 로그인한 순간 JohnG의 아이디가 저장되어 있는 쿠키를 만들게 됩니다.
다음번에 홈페이지를 접속하면 브라우저는 해당 사이트를 참조하는 쿠키를 불러와 미리 웹상에 아이디를 적어두게 됩니다.


또다른 시나리오를 통해 보겠습니다.

토익 시험을 준비하기를 마음 먹은 JohnG는 전자사전을 구입하기로 결심했습니다. 오프라인으로 구입할 시간이 없는 관계로 틈틈이 온라인상으로 전자사전 종류와 기능을 알아볼 수 밖에 없습니다.
하지만 JohnG가 로그인을 한적도 없지만 www.Johnwebsite.net 에서는 오늘 알아보던 전자사전 목록을 웹페이지의 오른쪽에 보여주고 있습니다. 


이번 시나리오는 사용자가 로그인을 하는 특정한 인증 과정을 거치지 않았는데도 사용자가 찾아보던 전자사전 목록을 저장해두고 있었습니다.

내부적으로 사용자가 www.Johnwebsite.net에 접속을 하면서 웹서버는 HTTP응답에 Set-cookie:식별번호 를 포함한 헤더를 포함하여 전송을 합니다. 이 메시지를 받은 사용자의 브라우저는 Set-cookie: 헤더를 확인하고 관리하는 특정한 쿠키 파일에 그 라인을 덧붙이게 됩니다.

계속해서 사용자가 웹사이트에 접속을 할때마다 이 식별번호를 포함하여 요청 메시지를 전송합니다.
서버는 식별번호를 이용하여 사용자의 사이트 이용사항을 알 수 있으며, 더 나은 서비스를 제공할 수 있게 됩니다.

쿠키 사용이 좋은 면이 있지만 좋지 못한 면 역시 있음을 알아야 합니다. 쿠키에 개인정보가 담겨 있기 때문에 이를 악용할 수 있기 때문입니다.
심지어 쿠키 정보에 사용자의 ID와 PW(password)를 암호화 하지않고 사용하는 경우도 있었습니다.

HTTP 콘텐츠

이전 웹,HTTP 이해(1)에서 언급했던 HTML 파일과 10개의 JPEG파일을 이용한 HTTP 응답메시지를 설명 했었습니다.
HTTP는 그외 GIF,XML,VoiceXML,WML(WAP markup language) 그리고 P2P 파일 공유를 위한 전송 프로토콜로도 사용되고 있습니다.


웹 캐싱


웹 캐시(Web cache)는 프록시 서버(proxy server)라고도 부릅니다.
자체 저장 디스크를 가지고 있어 최근 호출된 객체의 사본을 저장,보존합니다.


웹 캐싱 이해

먼저 JohnG가 http://www.Johnwebsite.com/dictionary.gif 라는 객체를 요구한다고 가정합니다.

   (1) JohnG는 Proxy server와 TCP연결을 하고 Proxy server에 있는 객체에 대한 HTTP 요청 메시지를
       보냅니다.
   (2) Proxy server는 객체의 사본이 자신의 저장장치에 있는지를 확인합니다.

   (3-1) JohnG가 요구한 객체가 있다면, HTTP 응답메시지를 객체를 포함하여 전송합니다.

   (3-2) JohnG가 요구한 객체가 없다면, Proxy server는 www.Johnwebsite.com과 TCP연결을 하고
          HTTP 요청메시지를 보냅니다.
           요청메시지를 받은 웹 서버는 객체와 함께 HTTP 응답메시지를  Proxy server로 보냅니다.
           웹 서버로 부터 응답메시지를 받은 Proxy server는 해당 객체의 사본을 저장하고 객체와 함께
          HTTP 응답메시지를 JohnG에게 보냅니다.


웹 캐싱을 사용하게 되면 클라이언트의 요구에 대한 응답 시간 감소, 기관 접속 회선상의 웹 트래픽 감소, 빠른 컨텐츠 분배를 위한 기반 구조등 더 나은 서비스 또는 비용절감의 효과를 얻을 수 있습니다.


조건부 GET

위에서 설명한 웹 캐싱은 클라이언트 외부에 존재하는 중간 네트워크 캐시 서버입니다. 하지만 클라이언트 내부에서 캐싱을 할 수 있습니다. 하지만 문제는 복사본이 최신 객체가 아닐 수도 있다는 것입니다.
HTTP는 클라이언트가 브라우저로 전달되는 모든 객체들이 최신의 것임을 확인하면서 캐싱을 하도록 해주는 방식을 가지고 있습니다. 이러한 방식을 조건부 GET(conditional GET)이라 합니다.
HTTP의 조건부 GET방식은 요청 메시지가 GET 방식을 사용하고 요청 메시지가 IF-Modified-Since: 헤더 라인을 포함하는 방식입니다.

요청 메시지:
GET /dictionary/best1.gif HTTP/1.1
HOST: www.Johnwebsite.com

응답 메시지:
HTTP/1.1 200 OK
Date: Mon, 7 Jul 2003 15:39:29
Server: Apache/1.3.0 (Unix)
Last-Modified: Wed, 2 Jul 2003 09:23;24
Content-Type: image/gif
(데이터 데이터 데이터 데이터 ...)


브라우저가 받은 응답 메시지에서 객체를 저장하고 마지막 수정된 날짜를 함께 저장합니다.
몇일이 지나 브라우저가 같은 객체를 캐시에 요청을 하면, 브라우저는 조건부 GET으로 갱신 조사를 수행합니다.

GET /dictionary/best1.gif HTTP/1.1
HOST : www.Johnwebsite.com
If-modified-since: Wed, 2 Jul 2003 09:23:24


If-modified-since: 헤더 라인에는 캐시에 저장된 객체의 마지막 수정된 날짜를 포함하고 이를 서버에 있는 객체의 마지막 수정된 날짜와 비교합니다.

수정된 객체라면 웹 서버로 부터 객체를 얻어 브라우저에 보내주게 됩니다.


 웹,HTTP 이해는 여기 까지 정리 하도록 하겠습니다. 이 내용을 바탕으로 앞으로 패킷 정보 분석에 대해 다룰까 합니다. 



****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by John_G

댓글을 달아 주세요

  1. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.05.03 14:03 신고  댓글주소  수정/삭제  댓글쓰기

    캬... WEB의 기본적인 동작절차와 Cookie가 무엇인지... 프록시가 어떤 것인지, HTTP Header의 구성요소까지.... 정말 잘 보고 갑니다...+ㅁ+
    많은 도움되었어요..!! 사이다님 수고 많으셨습니다..^^