언어에서의 약속
: 단어의 의미와 문법을 사회적으로 합의해 놓는 것
- 문장의 의미를 결정하는 매우 중요한 요소
- -> 컴퓨터에서도 이는 마찬가지
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 |