[보안기사] HTTP 구조

정보보안/정보보안기사|2025. 12. 24. 11:05

HTTP 구조

  (1) 시작라인

       - HTTP 요청에서 사용

       - 시작 라인 구조

         1) HTTP Method (요청 시 보내는 HTTP 메서드 형태)

            - GET : 어떠한 데이터를 받아 올 때 사용하는 메서드, Body가 없음

            - POST : 데이터를 생성/수정/삭제할 때 주로 사용하는 메서드, 요청 파라미터를 본문(Body)에 붙여서 전송

            - PUT : 서버의 데이터를 삽입/갱신하는 메서드

            - DELETE : 삭제

            - TRACE : 웹 서버가 콘텐츠를 서비스하기 위한 환경을 확인하기 위한 메서드

            - OPTIONS : 서버가 해당 경로에 대해 지원하는 메서드를 물어볼 때 사용하는 메서드 (OPTIONS/HTTP/1.1)

         2) Request Target (어디로 보내는지에 대한 URI)

         3) HTTP Version (HTTP 버전)

  (2) 상태라인

        - 서버가 클라이언트 요청에 대해 응답결과를 나타내는 첫번째 줄

        - Status code : 100 (Continue), 200 (OK), 300 (Multiple Choices, 동시에 여러 응답을 요청하는 경우), 400 (Bad Request), 403 (서버가 요청을 거부), 404 (요청된 URL이 존재하지 않는 경우) , 500 (서버 내부 오류)

  (3) 헤더

        - 헤더 구조

          1) cache-control (웹서버 부하 감소를 위한 캐싱 서버를 제어하는 필드)

             - max-age : 캐싱된 데이터의 유효시간을 설정 (max-age =30이면 30초동안 유효)

             - no-store : 캐싱 잠금 금지, 데이터의 캐시는 허용하지만 기존 캐시된 응답을 사용하지 않고 항상 새로운 응답을 사용 (max-age=0과 동일)

             * no-store를 포함한 메시지를 자꾸 보내면 서버에 부하가 발생함. (cache contrrol 공격이라고함)

          2) Connetion (연결을 유지할 것인지 끊을 것인지 지시하는 필드)

          3) Content-Type (body의 데이터 타입 필드)

          4)  Content-Length (body의 길이 필드, 바이트 단위, POST 방식에 동봉되는 데이터 크기)

             * content-Length 를 99999와 같이 매우 큰값으로 설정한 후 본문을 천천히 1바이트 씩 전송하게 되면 RUDY 공격, slow http post 공격

          5) Cookie (클라이언트에서 서버로 전달되는 쿠키 필드, 평문전송 시 위험)

          6) Set-Cookie

          7) Host (요청을 받는 서버의 URL 필드)

          8) User-Agent (요청을 보내는 클라이언트의 정보를 나타내는 필드)

          9) Allow (서버가 요청한 경로에 대해 허용하는 HTTP 메서드를 나타내는 부분 (예: Allow GET, HEAD, POST, OPTIONS)

  (4) 빈줄 - 헤더와 본문을 구분하기 위한 개행

  (5) 본문 - Body, 메시지의 본문을 포함하는 부분

 

◉ HTTP 구조를 모르면 아래의 것을 이해하기 어렵다

댓글()