공부/정보보안기사 실기

[Section 07] 어플리케이션 기본 학습 (333~ 341pg)

남쪽마을밤송이 2022. 5. 1. 21:59

 [02 HTTP] 

 (1) 개요 

HTTP 프로토콜은 웹상에서 클라이언트와 서버 간에 통신을 위해 개발된 프로토콜이다.

  • 웹의 정식명칭은 월드 와이드 웹으로 전 세계에 거미줄처럼 연결된 망이라는 의미이다.
  • 다양한 하이퍼 텍스트 문서들이 웹상에서 서로 연결되어 있다. 하이퍼 텍스트 문서란 참조 혹은 링크를 통해 한 문서에서 다른 문서로 접근할 수 있는 문서를 말한다. 대표적인 하이퍼 텍스트 문서로 HTML이 있다.
  • 주로 80/tcp 포트를 사용하며 1991년 HTTP 초기버전이 발표된 이후 1996년 1.0버전, 1999년 1.1버전이 발표되어 널리 사용되고 있다.
  • HTTP 통신은 클라이언트 요청과 서버 응답으로 이루어져 있다.

비연결형 프로토콜

  • HTTP/1.0 버전까지는 클라이언트의 HTTP 요청에 대한 서버의 HTTP 응답 이후에 TCP 연결을 바로 종료하는 구조로 동작한다.
    • 연결을 바로 종료하는 이유는 제한된 서버 연결 자원을 이용하여 최대한 많은 클라이언트의 요청을 처리하기 위함이다.
    • 서버 입장에서는 통신을 위한 다수의 TCP 연결 설정 및 종료에 대한 부하가 있다.
  • HTTP/1.1 버전부터 Connection 헤더에 Keep-Alive 옵션이 추가되었다. 이는 TCP 연결 상태를 웹 서버 설정에 따라 일정시간 지속시키는 옵션으로 한 번의 연결 이후에 요청/응답을 반복할 수 있다.
    • HTTP 응답 메시지를 분석해보면, 일반적으로 이미지, 스크립트 등 다수의 추가 자원 요청이 발생한다. 따라서 TCP 연결 설정 및 종료에 대한 부하를 줄이면서 효율적으로 클라이언트 요청을 처리하기 위해 연결 상태를 일정시간 유지하는 옵션이 추가되었다.
    • 최초 클라이언트 요청 시 웹서버는 Connection 응답헤더에 Keep-Alive 옵션을 설정하고 Keep-Alive 응답에허데 추가 옵션을 설정한다.
    • 아파치 웹서버 설정파일의 Keep-Alive 관련 설정을 살펴보면 다음과 같다. (책 참고)

상태정보를 유지하지 않는 프로토콜

  1. 상태정보를 유지하지 않는다는 것은 동일 클라이언트의 현재 요청과 이전 요청을 식별하지 못한다는 의미이다.
  2. 서비스 특성상 클라이언트의 상태정보 유지가 필요한 경우가 있다. 대표적으로 쇼핑몰의 장바구니 기능이나 로그인 상태 유지 등이 있다.
  3. 클라이언트 상태정보를 유지하기 위한 클라이언트 기술로 쿠키와 서버 기술로 세션이 있다.

 (2) 클라이언트 상태정보 유지 기술 

  • 쿠키 방식
    • 쿠키는 개별 클라이언트 상태정보를 HTTP 요청/응답 헤더에 담아서 전달하는 작은 정보/데이터를 말한다.
    • 서버에서 "Set-Cookie 응답헤더"를 통해 쿠키를 설정하여 클라이언트로 전달하면 클라이언트는 "Cookie  요청헤더"를 이용해 지속적으로 쿠키를 전달하는 형태로 동작한다.
    • 쿠키는 지속 시간에 따라 영속 쿠키과 세션 쿠키로 구분할 수 있다.
      • 영속 쿠키 : 클라이언트에 파일 형태로 지속적으로 존재하는 쿠키로 쿠키에 설정된 사이트 요청시마다 Cookie 요청 헤더에 쿠키 정보를 담아서 전달한다.
      • 세션 쿠키 : 클라이언트 메모리상에 세션이 유지되는 동안 존재하는 쿠키로 세션이 종료되면 (일반적으로 웹 브라우저 종료 시) 소멸된다.
    • 보안 취약점
      • 쿠키 방식은 클라이언트 상태정보를 클라이언트에 저장하고 HTTP 요청/응답 헤더에 담아서 전달하기 때문에 해킹 및 스니핑 공격에 의한 변조와 외부 노출에 취약한 특성이 있다.
      • 따라서 중요정보(개인정보, 신용정보, 비밀번호 등)을 저장할 경우에는 "쿠키 방식"이 아닌 서버에 상태정보를 저장하는 "세션 방식"이 안전하며 부득이하게 쿠키를 사용해야 할 경우에는 암호화를 적용해야 한다.