티스토리 뷰
<웹 기초 지식>
이번 장에서 다루는 키워드
Web Browser(웹 브라우저) : 웹에 접속하기 위해 사용하는 소프트웨어
Web Resource : 웹 상에 존재하는 모든 콘텐츠 ex) HTML, CSS, JS, PDF, PNG
URI (URL) : Uniform Resource Identifier의 약자로, 리소스를 식별하기 위한 식별자
HTTP (HyperText Transfer Protocol) : 웹을 이용하기 위한 통신 규약 (인터넷 서비스에서는 서비스 대상 간 통신 규약을 지정하여 통신한다.)
HTTPS (HyperText Transfer Protocol Secure) : 기존 HTTP 데이터를 암호화하여 통신
Cookie : 웹 브라우저에 저장하는 데이터
Session : 서버에 저장하는 데이터
Domain Name : 인터넷(웹) 네트워크상에서 컴퓨터를 식별하는 이름 ex) www.naver.com은 네이버의 서버 컴퓨터를 식별하는 이름
Server : 인터넷상에서 사용자에게 서비스를 제공하는 컴퓨터, 그 중 웹 서버는 사용자(웹브라우저)와 HTTP를 이용하여 통신하는 서버
Application : 서버에서 설정한 특정 기능들을 수행하는 소프트웨어
DataBase (DB) : 데이터를 저장하기 위해 사용하는 데이터 저장소
Web Browser
웹 브라우저 : HTTP를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹과 HTTP의 동작 원리를 알지 못해도 웹을 사용할 수 있도록 도와주는 소프트웨어, ex) Chrome, Edge, Safari, Firefox
네트워크 프로그램( ex) nc, telnet )을 통해 웹을 사용하게 되면,
웹 서버가 이해하고 해석할 수 있는 형태(HTTP)의 데이터를 직접 작성하여 전송해야 함
CLI 프로그램( ex) curl, wget )을 통해 웹을 사용하게 되면,
서버가 응답하여 주는 데이터를 단순히 출력만 하게 됨
웹 브라우저을 통해 웹을 사용하게 되면,
주소창에 접속하고자 하는 주소를 입력하여 웹 브라우저가 대신 접속해 서버에서 응답해주는 데이터를 해석하여 사용자가 보기 편하도록 화면에 출력
Web Resource
웹 리소스 : 웹에서 사용하는 콘텐츠
URL(Uniform Resource Locator) : 웹 리소스를 가리키는 주소
대표적인 웹 리소스
-HTML (Hyper Text Markup Language) : 웹 문서의 뼈대를 구축하기 위한 마크업 언어
-CSS (Cascading Style Sheets) : HTML이 표시되는 방법을 정의하는 스타일 시트 언어
-JS (JavaScript) : 페이지 내에서의 행위들을 설정
-Etc : 문서, 이미지, 동영상, 폰트 등
URI (URL)
URI : Uniform Resource Identifier의 약자로, 리소스를 식별하기 위한 식별자, Scheme, Authority (Userinfo, Host, Port), Path, Query, Fragment의 구성 요소를 가짐
URL : Uniform Resource Locator의 약자로 리소스의 위치를 식별하기 위한 URI의 하위개념

자주 쓰이는 웹 URI 구성 요소
-Scheme : 웹 서버에 접속할 때 어떤 체계를 이용할지에 대한 정보를 담음
-Host : Authority의 일부로써, 접속할 웹 서버의 호스트에 대한 정보를 가짐
-Port : Authority의 일부로써, 접속할 웹 서버의 포트에 대한 정보를 가짐
-Path : 접속할 웹 서버의 경로에 대한 정보를 가지고, /로 구분됨
-Query : 웹 서버에 전달하는 파라미터(추가적인 정보)이며, URI에서 ? 뒤에 붙음
-Fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있으며, URI에서 # 뒤에 붙음
Encoding
Encoding(인코딩) : 문자 또는 기호 등의 정보, 형태를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식
Decoding(디코딩) : 원래 형태로 변경하는 것
URI Encoding(percent encoding) : URI 구조내에서 예약어로 사용되는 문자들을 전송하고자 할 때 사용. 인코딩 방식은 입력된 문자를 Ascii테이블에서 매칭되는 Hex값에 %를 앞에 붙이면 됨. ex) ? -> %3F, # -> %23
HTML entity Encoding : HTML 문서 내에서 사용되는 문자열들이 HTML에서 사용하는 태그들의 문자로 인식되지 않도록 하기 위해 사용. 인코딩 방식은 입력된 문자를 Ascii테이블에서 매칭되는 Hex값에 %#x를 앞에 붙이거나, 주요한 문자들에 대해서 지정되어 있는 Entity name을 사용. ex) & -> %amp; or &
HTTP
HTTP 또는 HTTPS : 이전 페이지에서 배운 URI에서 Scheme (Protocol)에 해당
Protocol : 컴퓨터 내부 혹은 컴퓨터 사이에서 어떻게 데이터가 교환되는지 정의하는 규칙 체계
ex) https://dreamhack.io URI는 HTTPS 방식으로 dreamhack.io 서버와 통신한다는 의미
HTTP : 사용자가 서버에 요청을 하는 Request와 사용자의 요청에 대한 서버의 응답인 Response로 이루어짐
Cookie
Cookie(쿠키) : HTTP 요청마다 새로운 커넥션을 열기 때문에 사용자 인증을 계속해서 goid 한다는 단점이 있어서, 상태를 유지하기 위해 나온 개념, 웹 브라우저는 HTTP Response의 Set-Cookie Header나 Javascript docuent.cookie를 통해 데이터를 쿠키에 저장
Session
Session(세션) : 서버에 데이터를 저장하기 위해 사용. 이를 활용하면 데이터를 서버에 저장하고 해당 데이터를 접근할 수 있는 유추할 수 없는 랜덤 문자열 키를 만들어 응답함. 이를 보통 Session ID라 부름
쿠키와 세션의 차이 : 쿠키는 데이터 자체를 사용자가 저장, 세션은 서버가 저장
HTTP / HTTPS
HTTP : 모든 데이터가 평문으로 암호화 없이 전송. 웹에서 민감한 정보를 다룰 때 문제가 될 수 있음. 왼쪽 사진과 같이 네트워크상에서 평문으로 통신을 하며 상위 네트워크 장비, 같은 네트워크 상의 MITM 공격 등에 의해 통신이 노출될 경우 평문 정보를 그대로 출력되게 돼서 심각한 위험을 초래하게 됨
HTTPS : Transport Layer Security(TLS), Secure Sockets Layer(SSL)를 사용해서 암호화. 비교적 안전함. 오른쪽 사진처럼 네트워크상에서 데이터들이 암호화되어 전달되기 때문에 일반적으로 어떤 내용의 통신을 하는지 알 수 없게 됨


Domain Name / Host Name
IP Adress : 네트워크상에서 통신이 이루어질 때 장치들이 식별하기 위해 사용되는 주소
Domain Name : 불규칙한 숫자로 이루어진 IP Address를 사람이 외우기 쉽고, 의미를 부여해 사용하기 위해 사용. 이를 이용해 Host를 조회할 때는 Domain Name과 IP Adress 정보를 매핑해 저장하는 Domain Name Server(DNS)에서 조회해 등록된 IP Address를 가져와 사용
웹 서버 어플리케이션
Web Server : 사용자의 HTTP 요청을 해석하여 처리한 후 응답해주는 역할. 사용자로부터 받는 요청을 웹 서버 자체적으로 처리할지, 들어온 요청에 알맞은 내부 서비스로 연결해줄지 정할 수 있음. ex) nginx, Apache, Tomcat, IIS
Web Application : 사용자의 요청을 동적으로 처리할 수 있도록 만들어진 어플리케이션. 동적으로 처리하기 위해 Web Application Language가 사용되며 대표적으로 PHP, NodeJS, Python, Java 등이 존재
DataBase Management System(DBMS) : 데이터베이스 내의 데이터 조회/수정/삽입을 용이하게 사용할 수 있도록 도와주는 서버 어플리케이션. ex) MySQL, MS-SQL 해당 어플리케이션들이 관리하는 데이터를 데이터베이스라고 함
<웹 해킹 개요>
웹 해킹 : 본래의 의도와는 다른 동작을 일으키도록 하거나, 주어진 권한 이상으로 정보를 열람, 복제, 변경 가능한 행위가 웹에서 발생하는 것. Client-side와 Server-side로 공격 대상을 나누어볼 수 있음
Client-side Attack : 서비스 사용자에 대한 공격
Server-side Attack : 서비스를 운용하는 서버에 대한 공격
'해킹 > 웹해킹' 카테고리의 다른 글
| 4주차 과제 1_PHP 정리 (0) | 2020.11.22 |
|---|---|
| 3주차 과제 2_워게임 풀이 (0) | 2020.11.16 |
| 3주차 과제 1_생활코딩 Javascript 정리 (0) | 2020.11.16 |
| 2주차 과제 2_워게임 풀이 (0) | 2020.11.08 |
| 2주차 과제 1_HTML 수업 정리 (0) | 2020.11.08 |
