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>
- 웹 브라우저
- 네트워크 프로그램(nc,telnet)
- 웹 리소스 (Web Resource)
- 웹 상에 존재하는 모든 콘텐츠 (HTML, CSS, JS, PDF, PNG etc..)
- HTML (Hyper Text Markup Language)
- 웹 문서의 뼈대를 구축하기 위한 마크업 언어이다.
- 정해진 태그와 속성을 지정하여 문서를 구성한다.
- CSS (Cascading Style Sheets)
- HTML이 표시되는 방법을 정의하는 스타일 시트 언어이다.
- 이미지, 태그, 글자 등 다양한 웹 리소스들의 출력 시 스타일을 설정한다.
- 그 외 문서, 이미지, 동영상, 폰트 등이 있다.
- HTML (Hyper Text Markup Language)
- 웹 상에 존재하는 모든 콘텐츠 (HTML, CSS, JS, PDF, PNG etc..)
- 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에서 # 문자 뒤에 붙는다.
- Scheme
- 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 : 서버가 게이트웨이로 부터 잘못된 응답을 수신했음을 의미
- 200번 영역(성공) : 사용자의 요청에 대한 서버의 처리 성공
- 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/
반응형
'해킹 > 웹 해킹' 카테고리의 다른 글
web-ssrf (0) | 2021.11.25 |
---|---|
file-download-1 (0) | 2021.10.26 |
웹이란? (0) | 2021.09.24 |