관리 메뉴

FU11M00N

[ Web ] 웹 기초 키워드 , 브라우저, Encoding 본문

SUA 정보보안/Web Hacking Basic

[ Web ] 웹 기초 키워드 , 브라우저, Encoding

호IT 2021. 3. 17. 23:01

모든 자료의 저작권은 dreamhack.io에 있습니다. 본 게시물은 공부를 목적으로 작성되었습니다.

 

 


- 웹 접속

 

출처 : http://dreamhack.io

위 그림은 사용자가 드림핵 웹 사이트(http://dreamhack.io)에 접속 시 발생하는 과정을 간략히 표현한 그림입니다.

 

유저들은 웹 페이지에 접속할때 사이트의 도메인 주소만 입력해주면 쉽게 접속이 가능합니다.

하지만 실제 컴퓨터와 네트워크는 사진과 같이 많은 과정이 수행됩니다.

 

 

 

- 웹 기초 지식 키워드

  • Web browser : 웹에 접속하기 위해 사용하는 소프트웨어
  • Web resource : 웹 상에 존재하는 모든 콘텐츠(HTML, CSS, JS, PDF, PNG등)
  • URL(URI) : 리소스를 식별하기 위한 식별자
  • HTTP : 웹을 이용하기 위한 통신규약
  • HTTPS : 기존 HTTP 데이터를 암호화하여 통신
  • Cookie : 웹 브라우저에 저장하는 데이터
  • Session : 서버에 저장하는 데이터
  • Domain Name : 웹 네트워크 상에서 컴퓨터를 식별하는 이름
  • Server : 인터넷상에서 사용자에게 서비스를 제공하는 컴퓨터. 그 중 웹서버는 사용자(웹 브라우저)와 HTTP를 이용하여 통신하는 서버
  • Application : 서버에서 설정한 특정 기능들을 수행하는 소프트웨어
  • DataBase(DB) : 데이터를 저장하기 위해 사용하는 데이터 저장소]

 

- Web Browser

 

웹 브라우저는 HTTP 프로토콜를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹과 HTTP프로토콜의 동작 원리를 알지 못해도 웹을 사용할 수 있도록 도와주는 소프트웨어입니다.

 

대중적으로 많이 쓰이는 웹 브라우저는 Chrome, Edge, Safari, Firefox 등이있습니다.

웹 브라우저를 통해 불편함 없이 웹을 사용할수있지만, 모든 취약점은 사용자의 입력 값에서부터 발생합니다.

 

- 네트워크 프로그램

nc또는 telnet과 같은 네트워크 프로그램을 통해 웹을 사용하기 위해서는 웹 서버가 이해하고 해석할 수 있는 형태(HTTP)의 데이터를 직접 작성하여 전송하여야 합니다.

 

$ echo -ne "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"| n

 

 

- CLI 프로그램

 

curl, wget과 같은 CLI 프로그램을 통해 웹을 사용하게 되면 서버가 응답하여 주는 데이터를 단순히 출력만 하게 됩니다. 즉 CSS와 JavaScript 기능은 포함이 안됩니다.

 

curl example.com

 

- 웹 브라우저

 

웹 브라우저에서 웹을 사용하기 위해서는 주소창에 접속하고자 하는 주소를 입력합니다.

웹 브라우저는 사용자가 요청한 주소를 대신 접속해 서버에서 응답한 데이터를 해석한 후 화면에 출력합니다.

 

 

 

- URI

사진 출처 : https://dreamhack.io/learn/1/6#9

- URI 키워드

 

Host : Authority의 일부로써 접속할 웹 서버의 호스트(서버 주소)에 대한 정보를 가지고 있습니다. 

 

Port : Authority의 일부로써 접속할 웹 서버의 포트에 대한 정보를 가지고 있습니다. 

Path : 접속할 웹 서버의 경로에 대한 정보를 가지고 있으며 / 문자로 구분됩니다. 

Query : 웹 서버에 전달하는 파라미터 (추가적인 정보)이며 URI에서 ? 문자 뒤에 붙습니다.


Fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있으며 URI에서 # 문자 뒤에 붙습니다.

 

 

 

- Encoding

Encoding은 정보의 형태나 형식을 변환하는 처리 방식입니다.

형태를 표준화, 보안 목적으로 사용합니다.

이렇게 변환된 형태를 원래 형태로 변경하는 것을 Decoding(디코딩)라고 부릅니다,

 

암호화랑 헷갈릴수있지만 암호화로는 사용이 불가능합니다.

암호화는 양방향 암호 알고리즘으로 알고리믖과 유효한 키를 갖기고 있어야 복원이 가능합니다.

 

웹에서는 대부분 URL과 HTML Entity를 인코딩합니다.

 

- URL Encoding(percent encoding)

 

 

GET 메소드로 a=?b, c=&d의 데이터를 보내기 위해서는

http://example.com/?a=%3Fb&c=%26d의 형태로 전송되어야 합니다.

cf)인코딩방식= 입력된 문자를 ascii 테이블에서 매칭되는 hex 값에 %를 앞에 붙이면 됩니다.

 

"?" :   URL 인코딩 %3F

"#" :   URL 인코딩 %23

"&" :   URL 인코딩 %26

 "=" :  URL 인코딩 %3D

 

- HTML entity Encoding

 

HTML 인코딩은 html 문서 안에서 사용되는 문자열들이 html에서 상요되는 태그들의 문자로 인식되지 않기위해 사용합니다.

 

인코딩 방식은 입력된 문자를 ascii 테이블에 매칭되는 hex값에 &#x를 앞에 붙이거나 주요 문자들에대해 "entity name"을 합니다.

 

"&" :  entity name encoding = &    -> entity number encoding  = &

"<" :  entity name encoding = &lt;        -> entity number encoding     =  &#x26;

">" :  entity name encoding = &gt;        -> entity number encoding    = &#x3E;

 

 

 

 

Comments