언어에서의 약속

: 단어의 의미와 문법을 사회적으로 합의해 놓는 것

  • 문장의 의미를 결정하는 매우 중요한 요소
  • -> 컴퓨터에서도 이는 마찬가지

 

 

1. 인코딩 표준

: 문자를 기계어(0과 1)로 표현하기 위한 약속

  • 문장을 컴퓨터에 저장/표현, 네트워크로 교환

 

1-1. 아스키

: 7비트 데이터에 대한 인코딩 표준

  • 알파벳과 특수문자 표현 가능
  • 각 문자권마다 인코딩 표준이 달라 호환성 측면에서 국제 소프트웨어 개발에 큰 부담 (문자가 깨지는 문제)

 

1-2. 유니코드

: 모든 언어의 문자를 하나의 표준으로 담기 위해 제정된 인코딩 표준

  • 한 문자는 최대 32개 비트로 표현 - 2^32 = 대략 42억 개의 정보를 표현 가능
  • 한글, 한자, 일본어 문자, 알파벳 등의 문자들 외에도 이모지까지 포함

 

 

2. 통신 프로토콜

: 규격화된 상호작용에 적용되는 약속

  • 클라이언트가 서버에 리소스를 요청(Request)하는 것과 서버가 그에 응답(Response)하는 과정에 필요
  • 각 통신 주체가 교환하는 메시지를 명확히 해석할 수 있도록 문법(syntax)을 포함함
  • 문법에 어긋나는 메시지는 오류로 취급하여 무시
  • TCP/IP, HTTP, FTP 등 종류가 다양

 

 


1. HTTP(Hyper Text Transper Protocol)

: 서버와 클라이언트의 데이터 교환을 요청(Request)응답(Response) 형식으로 정의한 프로토콜

  • 클라이언트의 요청->서버의 응답을 기본 메커니즘으로 함
  • 서버는 HTTP 서버를 HTTP 서비스 포트(TCP/80 또는 TCP.8080)에 대기시킴
  • 클라이언트가 서비스 포트에 HTTP 요청을 전송하면 서버가 이를 해석해 적절히 응답

+

네트워크 포트 : 네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소

서비스 포트 : 네트워크 포트 중에서 특정 서비스가 점유하고 있는 포트 (번호)

: 전송 계층의 프로토콜을 따름

 

 

2. HTTP 메시지

: 클라이언트의 HTTP 요청 / 서버의 HTTP 응답이 있음

  • 크게 헤드 / 바디로 구성됨

 

2-1. HTTP 헤드

  • 각 줄은 CRLF 첫은 시작 줄(Start-line), 나머지 줄은 헤더(Header)
  • 헤드의 끝은 CRLF 한 줄로 나타냄
  • 하나의 HTTP에는 0개 이상의 헤더가 있음

 

2-2. HTTP 바디

  • 헤드의 끝을 나타내는 CRLF 뒤의 모든 줄
  • 클라나 서버에 전송하려는 데이터 본체가 담김

 

 

3. HTTP 요청

: 서버에게 특정 동작을 요구하는 메시지

  • 서버는 해당 동작이 실현 가능한지, 클라가 그런 동작을 요청할 권한이 있는지 등을 검토하고 적절할 때만 이를 처리

 

3-1. 시작 줄

: 메소드(Method), 요청 URI(Request-URI), HTTP 버전

  • 각각 띄어쓰기로 구분
  • 메소드: URI가 가리키는 리소스를 대상으로 서버가 수행하길 바라는 동작
  • (리소스를 가져오는 GET, 리소스로 데이터를 보내는 POST)
  • 요청 URI: 메소드의 대상
  • HTTP 버전: 클라가 사용하는 HTTP 프로토콜의 버전

 

 

4. HTTP 응답

: 요청에 대한 결과를 반환하는 메시지

  • 요청을 수행했는지/안 했는지, 안 했다면 이유는 무엇인지(상태 정보, Status), 클라에게 전송할 리소스

 

4-1. 시작 줄

: HTTP 버전, 상태 코드(Status Code), 처리 사유(Reason Phrase)

  • 각각 띄어쓰기로 구분
  • HTTP 버전: 서버가 사용하는 HTTP 프로토콜 버전
  • 상태 코드: 요청에 대한 결과를 세 자릿수로 나타낸 코드 (ex: 404 Not Found)
  • 처리 사유: 상태 코드가 발생한 이유를 짧게 기술한 것

 

 

 

5. HTTPS

: HTTP over Secure socket layer.

: TLS(Transport Layer Security) 프로토콜을 도입하여 메시지 탈취 문제에 대비한 것

  • 응답과 요청은 평문으로 전달됨 (탈취 시 중요 정보 유출될 수 있음)
  • EX) 로그인할 때 전송되는 post 요청에는 보통 이용자 아이디와 비번이 포함되므로 탈취 시 계정 도용 위험
  • TLS는 서버-클라 사이에 오가는 모든 HTTP 메시지를 암호화하므로 탈취해도 해석이 불가능하도록 만듦
  • HTTP 통신을 도청과 변조로부터 보호함
  • 웹서버 URL이 http://로 시작하면 HTTP, https://로 시작되면 HTTPS 프로토콜을 사용하는 것임

 

 

1. 웹

: HTTP를 이용하여 정보를 공유하는 인터넷 서비스

  • 정보를 제공하는 주체는 웹 서버, 이용자는 웹 클라이언트
  • 요청을 받는 부분은 프론트엔드, 요청을 처리하는 부분은 백엔드

 

 

 

2. 웹 리소스

: 웹에 갖춰진 정보 자산

  • 주소창에 입력된 주소는 그 주소에 존재하는 경로의 리소스를 가져오라는 의미임
  • 모든 웹 리소스는 고유의 Uniform Resource Indicator(URI)를 가지며 이를 이용해 식별됨

2-1. 대표적인 웹 리소스

: HTML (Hyper Text Markup Language) : 태그와 속성을 통한 구조화된 문서 작성 지원

: CSS (Cascading Style Sheets) : 웹 리소스의 시각화(디자인) 방법을 기재한 시트

: JavaScript : 웹 문서의 동작과 상호작용 정의. 이용자의 브라우저(클라이언트)가 실행하는 코드라고 하여 Client-Side Script라고도 함

 

 

3. 웹 브라우저

: 서버와 HTTP 통신을 대신해 주고 수신한 리소스를 시각화해 사용자에게 제공하는 소프트웨어

= 이용자 경험(User eXperience, UX)을 제공함

  • 사용자는 원하는 정보를 얻고 이용할 수 있지만 내부 연산에 대해서는 알 수 없음
  • 주소창의 주소 해석 -> 주소 탐색 -> 요청 -> 응답 수신 -> 리소스 다운로드 및 렌더링

 

 

4. URL (Uniform Resource Locator)

: 웹에 있는 리소스의 위치를 표현하는 문자열

  • Scheme: 웹 서버와 통신할 프로토콜의 종류
  • Authority: (Host - 접속할 웹서버 주소 정보), (Port - 접속할 웹서버 포트 정보), (Userinfo)
  • Path: 접근할 웹서버 리소스 경로 (/로 구분)
  • Query: 웹 서버에 전달하는 파라미터 (? 뒤에 위치)
  • Fragment: 서브리소스에 접근할 때 이를 식별하기 위한 정보 (# 뒤에 위치)

 

 

4-1. IP Address

: 넷 상에서 통신이 이루어질 때 장치를 식별하기 위한 주소

  • 숫자로 이루어져 있어 외우기 어려움 -> 도메인 특성을 담은 이름(Domain Name)을 따로 정의하여 대신 사용

 

4-2. DNS (Domain Name Server)

: 도메인네임에 대응하는 ip주소를 갖고 있는 서버

  • 웹브라우저는 도메인네임이 호스트 값으로 들어올 경우 DNS에 이를 질의하여 DNS가 응답한 IP주소를 사용함

 

5. 웹 렌더링

: 서버로부터 받은 리소스를 이용자에게 시각화하는 행위

  • 브라우저가 리소스의 타입을 확인하여 적절한 방식으로 이를 이용자에게 전달
  • 브라우저별로 웹 렌더링 엔진이 모두 다름 (사파리-웹킷, 크롬-블링크, 파이어폭스-게코)
  • 엔진별 순서/과정/속도 차이는 있으나 역할은 모두 동일

 

 

6. 개발자 도구(Devtools)

: 에디터와 브라우저를 오가며 코드와 결과를 확인할 수고를 덜 수 있도록 도와주는 도구

  • 디버거, 콘솔, 패킷 등 제공

 

  • 요소 검사: 특정 요소의 개괄적 정보 파악, 해당 부분 관련 코드 하이라이팅
  • 디바이스 툴바: 브라우저의 화면 비율 및 User-Agent를 원하는 값으로 변경. 장치별 환경 확인 가능
  • 콘솔: 프론트엔드의 JS 코드에서 발생한 각종 메시지 출력, 입력한 JS 코드 실행
  • Sources: 현재 페이지를 구성하는 웹 리소스 확인. 디버깅도 가능
  • Network: 서버와의 사이에 오가는 데이터 확인. 로그 복사도 가능
  • Application: 쿠키, 캐시, 이미지, 폰트, 스타일시트 등 앱 관련 리소스 조회

 

 

6-1. Secret browsing mode

: 새로운 브라우저 세션을 생성하고, 종료했을 때 방문기록/쿠키/입력한 양식/권한을 저장하지 않는 모드

  • 일반적으로 브라우저의 탭들은 쿠키를 공유하나 시크릿모드의 탭은 공유하지 않음
  • 같은 사이트를 여러 세션으로 사용할 수 있어 다수의 계정으로 서비스를 점검할 때 유용함

'WEB > 웹해킹' 카테고리의 다른 글

[웹해킹] stage 4  (0) 2022.09.23
[웹해킹] stage 3  (0) 2022.09.18
XSS Game 5, 6  (0) 2022.08.28
XSS Game 3, 4  (0) 2022.08.26
XSS Game 1, 2  (0) 2022.08.12

+ Recent posts