[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 관련 설정을 살펴보면 다음과 같다. (책 참고)
상태정보를 유지하지 않는 프로토콜
- 상태정보를 유지하지 않는다는 것은 동일 클라이언트의 현재 요청과 이전 요청을 식별하지 못한다는 의미이다.
- 서비스 특성상 클라이언트의 상태정보 유지가 필요한 경우가 있다. 대표적으로 쇼핑몰의 장바구니 기능이나 로그인 상태 유지 등이 있다.
- 클라이언트 상태정보를 유지하기 위한 클라이언트 기술로 쿠키와 서버 기술로 세션이 있다.
(2) 클라이언트 상태정보 유지 기술
- 쿠키 방식
- 쿠키는 개별 클라이언트 상태정보를 HTTP 요청/응답 헤더에 담아서 전달하는 작은 정보/데이터를 말한다.
- 서버에서 "Set-Cookie 응답헤더"를 통해 쿠키를 설정하여 클라이언트로 전달하면 클라이언트는 "Cookie 요청헤더"를 이용해 지속적으로 쿠키를 전달하는 형태로 동작한다.
- 쿠키는 지속 시간에 따라 영속 쿠키과 세션 쿠키로 구분할 수 있다.
- 영속 쿠키 : 클라이언트에 파일 형태로 지속적으로 존재하는 쿠키로 쿠키에 설정된 사이트 요청시마다 Cookie 요청 헤더에 쿠키 정보를 담아서 전달한다.
- 세션 쿠키 : 클라이언트 메모리상에 세션이 유지되는 동안 존재하는 쿠키로 세션이 종료되면 (일반적으로 웹 브라우저 종료 시) 소멸된다.
- 보안 취약점
- 쿠키 방식은 클라이언트 상태정보를 클라이언트에 저장하고 HTTP 요청/응답 헤더에 담아서 전달하기 때문에 해킹 및 스니핑 공격에 의한 변조와 외부 노출에 취약한 특성이 있다.
- 따라서 중요정보(개인정보, 신용정보, 비밀번호 등)을 저장할 경우에는 "쿠키 방식"이 아닌 서버에 상태정보를 저장하는 "세션 방식"이 안전하며 부득이하게 쿠키를 사용해야 할 경우에는 암호화를 적용해야 한다.
'공부 > 정보보안기사 실기' 카테고리의 다른 글
[Section 07] 어플리케이션 기본 학습 (350~ 355pg) (0) | 2022.05.04 |
---|---|
[Section 07] 어플리케이션 기본 학습 (342~ 349pg) (0) | 2022.05.03 |
[Section 07] 어플리케이션 기본 학습 (315~ 332pg) (0) | 2022.04.29 |
[Section 05] 네트워크 보안 프로토콜 (277~ 301pg) (0) | 2022.04.22 |
[Section 04] 네트워크 기본 학습 (257~ 276pg) (0) | 2022.04.21 |