본문 바로가기

자격증/정보보안기사

PART 3. 애플리케이션 - HTTP

HTTP(Hyper Text Transfer Protocol) 프로토콜

 

1. 개요

  • 웹 상에서 클라이언트와 서버 간에 통신을 위해 개발된 프로토콜
  • 80/tcp 포트
  • 1999년 1.1버전 발표 이후 현재까지 사용

 

2. 특성

1. Connectionless

  • HTTP/1.1 버전 이후 웹서버 Connection 응답헤더에 Keep-Alive 옵션 추가
    • 웹서버 설정에 따라 일정 시간 연결 지속
    • 이전 버전: 1회 Request 시 1회 Response 후 Connection 종료
  • 웹서버 설정
    • ex. 아파치 웹서버 설정 파일 /etc/httpd.conf
KeepAlive On
MaxKeepAliveRequests 100 //최대 요청 건수
KeepAliveTimeout 15 //지속 시간

 

 

2. Stateless

  • 클라이언트의 현재 / 이전 요청 식별 X
    • 상태정보 유지가 필요한 경우가 있기 때문에 (ex. 장바구니) 클라이언트 기술 사용
  • 클라이언트 상태정보 유지 기술
    • 쿠키
      • 클라이언트에 저장
      • 개별 상태정보 HTTP 요청 / 응답헤더에 전달하는 작은 데이터
      • Set-cookie / cookie 에 쿠키 직접 전달
      • 스니핑 / 해킹에 취약
    • 세션
      • 서버에 저장
      • 클라이언트 식별 위해 세션ID 부여 
      • Set-cookie / cookie 에 세션ID 전달
      • HTTP 세션 하이재킹을 통해 정상 사용자로 위장 접근 가능

 

3. HTTP 쿠키 보안 속성

  • httponly
    • 스크립트로 쿠키 접근 차단(XSS 대응)
    • Set-cookie 응답헤더에 설정
      • key: Set-cookie
      • value: PUPSESSID=38d7a9sjdyf01273; path=/; HttpOnly
  • secure
    • 패킷 암호화(기밀성), HTTPS 통신인 경우에만 쿠키 전송
    • Set-cookie 응답헤더에 설정
      • key: Set-cookie
      • value: PUPSESSID=38d7a9sjdyf01273; path=/; HttpOnly; secure
  • expires
    • 쿠키 유효기간 설정(날짜/시간)
    • Set-cookie 응답헤더에 설정
      • key: Set-cookie
      • value: PUPSESSID=38d7a9sj01273; path=/; HttpOnly; secure; expires=Sat, 16-Dec-2025 04:32:19 GMT

4. HTTP 요청 메소드

  • GET, POST, HEAD, OPTIONS, TRACE, PUT, DELETE, ...
  HEAD OPTIONS
클라이언트 요청 HEAD /index.php HTTP/1.0 OPIONS * HTTP/1.0
서버 응답 HTTP/1.1 200 OK
Date: ~
Server: ~
Content-Length:0
Content-Type: text/html
<CRLF>
HTTP/1.1 200 OK
Date: ~
Server: ~
Content-Length:0
Allow: GET, HEAD, OPTIONS, TRACE
<CRLF>
특징 body 없고 헤더만 반환 Allow 응답헤더를 통해 웹서버 지원 메소드 반환

 

5. HTTP 응답 상태 코드

응답 상세코드 설명 비고
1xx (정보) 100 continue  
2xx(성공) 200 OK  
201 created  
202 accepted  
3xx(Redirection)

301 moved permanently 자원 위치 영구 변경
302 found 자원 위치 임시 변경
304 not modified  
4xx(클라이언트 오류) 400 bad request 요청 메시지 문법 오류
401 unauthorized 권한 없음
403 forbidden 접근 차단(ACL 등)
404 not found 자원 존재하지 않음
5xx(서버 오류) 500 내부 서버 오류