본문 바로가기

Hacking & Security

About HTTP & Web Server

About HTTP & Web server


HTTP(Hyper Text Transfer Protocol)

  • 웹 문서를 전송하는 프로토콜
    • Port : TCP 80
  • HTTP Request & Response
    • RFC 2616으로 발표된 HTTP 1.1 ver
      • 클라이언트의 요청과 서버의 응답에 의해 동작하는 간단한 프로토콜
      • 동작원리
        • HTTP 클라이언트가 서버에 요청을 전송, 요청 메서드, URL, HTTP 버전 등과 같은 부가 정보 포함
        • HTTP 서버가 요청의 결과인 응답 코드가 포함된 정보를 회신.
  • 이전에는 OS를 소유한 회사가 매우 강세였으나 현재는 브라우저 내에서 프로그램이 실행되는 것과 같이 브라우저 내 종속되는 추세이다.
  • Stateless & Connectionless
    • 데이터를 전송함과 동시에 네트워크를 끊는다. 이벤트가 발생할 때 마다 세션을 새로 연결한다.
      계속하여 세션을 유지할 경우, 웹 서비스가 수많은 사람의 세션 유지에 부하가 생긴다.

Web Server란?

  • HTTP 서버라고도 불리며 HTTP를 이용하여 웹 서비스를 제공하는 프로그램을 의미한다.
    • 사용자로부터 요청 URL을 받아 그에 해당하는 자원을 제공하는 서버
  • 웹 브라우저는 GET/POST방식을 통해 웹 서버에게 request,
    서버는 이에 해당하는 자원을 HTML형태로 response
  • 웹 서버 프로그램
    • *nix : Apache
    • WIndows : IIS(Internet Information Server)

Web Server 동작 원리

  • 웹 브라우저가 웹 서버에게 자원을 요청(Request)하면, 웹 서버는 요청을 처리하고 결과를 웹 브라우저에게 응답(Response)한다.

  • 메서드(Method)

    • 클라이언트가 요청하는 방식
    • 형식 : 메서드 요청 URL HTTP version
  • 주요 메서드

    • 메서드 설명
      HEAD 지정 URL에 요청을 보냈을 때 응답 헤더 ( 주로 스캐너에서 많이 이용 )
      GET 지정 URL에 해당하는 자원을 요청
      POST 지정 URL에 데이터를 전송하여 처리를 요청 (Form 전송)
      PUT 지정 URL에 데이터를 전송하여 저장 요청 (파일 업로드)
      DELETE 지정 URL에 해당하는 리소스(파일) 삭제 요청
  • HTTP status code

    • 웹 서버의 응답 동작에 대한 3자리 숫자 코드

      • 상태코드 설명
        200 성공
        301 요청한 리소스는 영구적으로 이동
        302 요청한 리소스는 일시적으로 이동
        401 인증이 필요함을 명시
        403 권한 없는 접근 즉, 접근이 금지됨
        404 요청 리소스가 존재하지 않음. 없는 자료를 client가 요청
        500 서버에서 클라이언트 요청 처리 중 오류 발생 (500번대 에러는 서버에 문제가 존재하는것.)
        공격이 가능하다.
  • 응답 코드 클래스(Response Code Class)

    • 응답 코드 클래스 의미 설명
      1 Informational(정보) 요청을 받고, 처리중에 있음.
      2 Success(성공) 요청을 정상적으로 처리함.
      3 Redirection(리다이렉션) 요청의 완료를 위하여 추가 동작이 필요함.
      4 Client Error(클라이언트 오류) 클라이언트 요청을 처리할 수 없어 오류 발생.
      5 Server Error(서버 오류) 서버에서 처리를 하지 못하여 오류 발생.

      추가적으로 , 1xx, 2xx, 3xx는 정상적인 처리 또는 과정, 정보를 의미하며 4xx, 5xx는 에러를 의미한다.

  • 404가 많이 나오는 경우 -> 클라이언트 에러 -> src IP를 점검할 필요가 있다.

  • 5xx가 많이 나오는 경우 -> 서버 에러 -> 공격 위험 보안상 문제

HTML(Hyper Text Markup Language)

  • 정적(Static) 웹 페이지로서 HTML 문서 페이지를 웹 서버에 저장해 두고, 클라이언트가 특정 HTML 페이지를 요청하면
    해당 HTML 문서를 단순히 클라이언트에게 전송

SSS(Server Side Script)

  • 클라이언트가 요청하는 사항에 따라 데이터베이스 서버와 WAS서버와 함께 결과물을 만들어내고, 그 결과물을 HTML로 만들어 클라이언트에게 전달한다.
  • JSP(Java Script Pages), ASP(Active Server Page), PHP(Personal Home Page) ...etc
  • 서버에서 동작하는 경우, 우리가 입력한 값을 서버로 가져가서 가공을 진행한다.

CSS(Client Side Script)

  • 서버가 아닌 클라이언트 측의 웹 브라우저에 의해 실행 자바스크립트, 비주얼 베이직 스크립트등을 실행하는 것.
  • 이름 그대로 클라이언트 측의 스크립트임으로 조작이 가능하다. -> 매 우 위 험 !