해킹/웹 해킹

웹 기초 지식

MellowHoney 2021. 9. 28. 16:45
728x90
반응형

본 글은 DreamHack의 강의 내용을 요약한 글이므로 자세한 내용은 dreamhack.io 에서 학습하시길 바랍니다.

본 포스팅은 개인의 학습을 위해 작성되었습니다.

 

  • 웹 브라우저 (Web Browser)
    • 웹에 접속하기 위해 사용하는 소프트웨어
    • HTTP를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹과 HTTP의 동작 원리를 알지 못해도 웹을 사용할 수 있도록 도와주는 소프트웨어
    • 대중적인 웹 브라우저로는 Chrome, Edge, Safari, Firefox 등이 있다.
        Chrome Edge Safari Firefox
      제조사 구글 마이크로소프트 애플 모질라 재단
      Javascript 엔진 V8 ChakraCore JavascriptCore Spider Monkey
      HTML/CSS 엔진 Blink EdgeHTML Webkit Gecko
      사생활 보호/보장 (EDNS) X X X O
      패스워드 동기화 O O O O
    • 네트워크 프로그램, CLI 프로그램, 웹 브라우저 비교
      • 네트워크 프로그램(nc,telnet)
        $ echo -ne "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"| nc example.com 80
        HTTP/1.1 200 OK
        Accept-Ranges: bytes
        Cache-Control: max-age=604800
        Content-Type: text/html; charset=UTF-8
        Date: Fri, 10 Jan 2020 07:24:17 GMT
        Etag: "3147526947+gzip"
        Expires: Fri, 17 Jan 2020 07:24:17 GMT
        Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
        Server: ECS (sgt/B3B1)
        Vary: Accept-Encoding
        X-Cache: HIT
        Content-Length: 1256
        <!doctype html>
        <html>
        <head>
            <title>Example Domain</title>
            <meta charset="utf-8" />
            <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <style type="text/css">
        ...
            </style>    
        </head>
        <body>
        <div>
            <h1>Example Domain</h1>
            <p>This domain is for use in illustrative examples in documents. You may use this
            domain in literature without prior coordination or asking for permission.</p>
            <p><a href="https://www.iana.org/domains/example">More information...</a></p>
        </div>
        </body>
        </html>​
      • CLI 프로그램 (curl, wget)
        $ curl example.com
        <!doctype html>
        <html>
        <head>
            <title>Example Domain</title>
            <meta charset="utf-8" />
            <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <style type="text/css">
        ...
            </style>    
        </head>
        <body>
        <div>
            <h1>Example Domain</h1>
            <p>This domain is for use in illustrative examples in documents. You may use this
            domain in literature without prior coordination or asking for permission.</p>
            <p><a href="https://www.iana.org/domains/example">More information...</a></p>
        </div>
        </body>
        </html>​
      • 웹 브라우저
  • 웹 리소스 (Web Resource)
    • 웹 상에 존재하는 모든 콘텐츠 (HTML, CSS, JS, PDF, PNG etc..)
      • HTML (Hyper Text Markup Language)
        • 웹 문서의 뼈대를 구축하기 위한 마크업 언어이다.
        • 정해진 태그와 속성을 지정하여 문서를 구성한다.
      • CSS (Cascading Style Sheets)
        • HTML이 표시되는 방법을 정의하는 스타일 시트 언어이다.
        • 이미지, 태그, 글자 등 다양한 웹 리소스들의 출력 시 스타일을 설정한다.
      • 그 외 문서, 이미지, 동영상, 폰트 등이 있다.
  • URI (Uniform Resource Identifier)
    • 리소스를 식별하기 위한 식별자이다.
    • URL(Uniform Resource Locator)으로도 불리며 URL은 리소스의 위치를 식별하기 위한 URI의 하위 개념이다.
    • URI의 구성 요소
      • Scheme
        • foo://
        • 웹 서버에 접속할 때 어떤 체계(프로토콜)를 이용할지에 대한 정보를 담고 있다.
      • Host
        • example.com
        • Authority의 일부로써 접속할 웹 서버의 호스트(서버 주소)에 대한 정보를 가지고 있다.
      • Port
        • :8042
        • Authority의 일부로써 접속할 웹 서버의 포트에 대한 정보를 가지고 있다.
      • Path
        • /over
        • 접속할 웹 서버의 경로에 대한 정보를 가지고 있으며 / 문자로 구분된다.
      • Query
        • ?name=ferret
        • 웹 서버에 전달하는 파라미터 (추가적인 정보)이며 URI에서 ? 문자 뒤에 붙는다.
      • Fragment
        • #nose
        • 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있으며 URI에서 # 문자 뒤에 붙는다.
  • HTTP (HyperText Transfer Protocol)
    • 인터넷 서비스에서는 서비스 대상 간 통신 규약(Protocol)을 지정하여 통신한다.
    • HTTP는 웹을 이용하기 위한 통신 규약이다.
    • 80 포트
    • Content-Type: text/html
    • Content-Length: 61
    • Server: Apache/2.4.29 (Ubuntu)
  • HTTP Request
    • 서버에 대한 요청 의미
    • Method : 서버에 요청 시 수행하고자 하는 동작
      • Head : GET 메소드와 동일, but Response의 Body 부분은 받지 않고 Header만 받음. ex) 서버 상태 확인 etc...
      • GET : 리소스 요청 ex) 게시물/프로필 보기, 이미지, 동영상 etc...
      • POST : 특정 리소스 생성 및 데이터 추가를 위한 값을 제출 할 때 사용 ex) 게시물.프로필 생성 etc...
      • PUT : 특정 리소스의 내용을 보낸 값으로 설정 ex) 생성/업데이트 etc...
      • PATCH : 특정 리소스의 내용 중 보낸 값의 key만 변경 ex) 게시글 업데이트 etc...
      • DELETE : 특정 리소스 삭제 ex) 게시물 삭제 etc...
      • TRACE : 요청받은 값을 Response의 Body로 다시 클라이언트에게 반송
    • Request URL (Path) : 사용자가 서버에 요청하는 웹 리소스의 경로
    • HTTP Version : HTTP 버전
    • Header : 서버에 추가 정보를 전달하는 데이터 부분 ex) 사용자 식별 쿠키 정보, 사용자 데이터 처리 방식 및 형식 정보
  • HTTP Response
    • 사용자의 요청에 대한 서버의 응답 의미
    • Version : HTTP 버전
    • Status code :사용자의 요청에 대한 서버의 처리 결과
      • 200번 영역(성공) : 사용자의 요청에 대한 서버의 처리 성공
        • 200 OK : 요청에 대한 응답 성공
        • 201 Created : 요청 성공 및 새로운 리소스 생성
      • 300번 영역(리다이렉션) : 사용자가 요청한 리소스가 다른 경로로 변경된 경우
        • 301 Moved Permanently : 요청한 리소스의 URI의 변경됨을 의미
        • 302 Found : 요청한 리소스의 URI가 일시적으로 변경됨을 의미
      • 400번 영역(클라이언트 오류) : 사용자가 서버에 요청하는 구조 또는 요청 처리 실패
        • 400 Bad Request : 잘못된 문법으로 인한 서버 요청 이해 불가, 서버가 클라이언트의 존재를 모름.
        • 403 Forbidden : 클라이언트가 콘텐츠에 접근할 권리가 없음, 서버가 클라이언트의 존재를 알고 있음.
        • 404 Not Found : 서버가 요청받은 리소스를 찾을 수 없음
        • 405 Method Not Allowed : 요청한 메소드를 서버에서 알고 있지만, 제거되었음.
      • 500번 영역(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족 실패
        • 500 Internal Server Error : 웹 사이트 서버에 문제가 있음
        • 503 Service Unavailable : 서버가 게이트웨이로 부터 잘못된 응답을 수신했음을 의미
    • Header : 사용자와 상호작용하기 위한 데이터를 담는 부분으로 사용됩니다.                                                                        ex) 사용자(웹 브라우저)에서 서버의 응답 데이터를 처리하는 방식 및 형식에 대한 정보, 사용자 식별 쿠키 발급 정보 등
    • Body : 서버가 사용자에게 응답하는 데이터를 담는 부분입니다.
  • HTTPS (HyperText Transfer Protocol Secure)
    • 기존 HTTP 데이터를 암호화하여 통신한다.
    • 443 포트
  • 쿠키 (Cookie)
    • 웹 브라우저에 저장하는 데이터
  • 세션 (Session)
    • 서버에 저장하는 데이터
  • 도메인 이름 (Domain Name)
    • 인터넷(웹) 네트워크상에서 컴퓨터를 식별하는 이름
  • 서버 (Server)
    • 서버는 인터넷상에서 사용자에게 서비스를 제공하는 컴퓨터이다.
    • 웹 서버는 사용자(웹브라우저)와 HTTP를 이용하여 통신하는 서버이다.
  • 어플리케이션 (Application)
    • 서버에서 설정한 특정 기능들을 수행하는 소프트웨어이다.
  • DataBase (DB)
    • 데이터를 저장하기 위해 사용하는 데이터 저장소.

HTTP 상태 코드 : https://www.whatap.io/ko/blog/40/

 

반응형