Hongfluenza

인코딩(Encoding)이란 ? : ASCII, URL, HTML, Base64, MS Script 인코딩 본문

STUDY/WEB

인코딩(Encoding)이란 ? : ASCII, URL, HTML, Base64, MS Script 인코딩

Hongfluenza 2019. 7. 3. 19:37

webhacking.kr 회원가입 문제를 해결하면서 Base 64 디코딩을 활용했다.

네트워크 전공 시간에 다양한 디코딩 방법을 이용해 문제를 해결했던 기억을 되살려 인코딩이 무엇이며 어떠한 종류가 있는 지에 대해 살펴보도록 하겠다.

 

 

1> 인코딩이란?

  • 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식 → 즉, 컴퓨터가 이해할 수 있는 형식으로 바꾸어주는 것.
  • 내용에는 변화가 없고, 암호화로는 사용이 불가능하다.
  • 인코딩의 종류에는 ASCII, URL, HTML, Base64, MS Script 등이 있다.

 

2.1> ASCII 인코딩

  • ASCII (American Standard Code for Information Interchange) : 미국 정보교환 표준 코드
  • 영문자를 컴퓨터가 해석할 수 있는 숫자로 변환시켜 준다.
  • 1Byte(8bit)중 7bit를 사용하여 0~127까지 총 128개의 문자를 구성한 코드
  • 128개의 문자는 영어 알파벳 대문자, 소문자, 보조문자, 제어문자로 구성되어 있다.

아스키 테이블 표

2.2> URL 인코딩

  • ASCII코드에 없는 영어를 제외한 외국어(한국어 포함)와 ASCII코드에서 표현하지 않는 특수문자를 표현하기 위해 사용된다.
  • 형식 : 기존 문자열의 HEX값 앞에 '%' 사용 (ASCII Table의 출력가능 문자)
  • 한글 : UTF-8 사용
  • Force Full URL Encoding : 모든 문자열을 강제로 인코딩
  • URL은 ASCII 문자 집합을 사용하여 인터넷을 통해서만 전송할 수 있다.

2.2.1> 중요 URL 메타문자

종류 URL 코드 특징
? %3F 인자(파라미터)를 넘겨줄 때 사용
& %26 각각의 인자를 구분할 때 사용
= %3D 인자 전달자로서 인자값을 인자로 전달할 때 사용
% %25 16진수(Hex) 값을 표현할 때 사용
+ - 공백 문자를 표현할 때 사용
NULL(공백) %00 공백을 표현할 때 사용

 

2.2.2> url 인코딩 예제

http://www.convertstring.com/ko/EncodeDecode/UrlEncode

 

URL 인코딩 - 온라인 URL 인코더

 

www.convertstring.com

다음은 url 인코딩을 해주는 사이트이다.

인코딩하고자 하는 텍스트인 'url 인코딩을 해보자!' 를 입력했더니

다음과 같은 결과가 나왔음을 확인할 수 있었다.

 

2.3> HTML 인코딩

  • HTML 문서 안에는 스크립트와 같이 특수한 기능을 하는 문자들이 포함된다. 악의적인 특수기능을 막기 위해 인코딩하여 안전하게 HTML문서와 함께 사용하기 위해서 HTML 인코딩을 사용한다.
  • ASCII코드값을 기준으로 인코딩 된다.

    EX) A(ASCII 값==65) -- HTML 인코딩 → %#65;

  • 특징 : 코드의 앞에 %#문자 가 포함된다.
  • HTML 인코딩은 XSS(크로스 사이트 스크립트)의 방어 대책으로 사용된다.

2.3.1> HTML Table

HTML ENCODING
공백  
< &lt
> &gt
& &amp;
' &apos;
" &quot;

 

2.3.2> HTML 인코딩 예시

http://www.convertstring.com/ko/EncodeDecode/HtmlEncode

 

html로 인코딩 - 온라인 html로 인코더

 

www.convertstring.com

HTML 인코딩을 해주는 사이트를 통해 HTML 인코딩을 해보자.

인코딩 하고자하는 코드
HTML 인코딩 된 결과

 

2.4> BASE 64 인코딩

  • 이메일 사용을 위한 인터넷 표준 포맷인 MIME를 사용하기 위해 사용한다.
    SMTP라는 이메일 전송 프로토콜도 존재하지만 ASCII는 7bit문자만 지원하기 때문에 더 많은 문자를 표현하기 위해 사용된다.
  • 2진 데이터를 ASCII 형태의 텍스트로 표현 가능하다.
  • WEB인증 중, 기본인증에 사용된다.
  • 64개의 문자를 사용한다. ( 영문 대,소문자, 숫자, +, / )
  • 특징 : 코드의 마지막에 = 또는 ==문자가 포함된다.
  • Base 64 인코딩은 8bit의 문자를 6bit단위로 나누어 준다. 각각의 6bit를 Base64 인코딩 테이블과 매칭시키는 방식을 사용한다.

BASE 64 표

2.4.1> BASE 64 인코딩 순서

1) 아스키 테이블 맵핑

2) 2진수 변환

3) 6bit 단위로 분할

4) 10진수 변환

5) BASE64 테이블 맵핑

6) 패딩연산( 총 비트수 % 3 => 0 : 없음, 1 : =, 2: == )

 

 

2.5> MS Script

  • Microsoft에서 제공하는 인코딩 기법으로 IE에서만 사용가능
  • IE는 MS Script Decoder를 가지고 있음
  • <script launguate="Jscript.Encode>를 명시하여 IE에게 알려주어야 함
  • 범용성이 뛰어나지 않아 거의 사용하지 않는다.

 

...더보기

'STUDY > WEB' 카테고리의 다른 글

SQL 인젝션  (0) 2019.07.13
[PHP] 문자열 필터링 함수, ereg와 eregi  (0) 2019.07.06
[PHP] Setcookie() 함수  (0) 2019.07.06
간단한 ASP 문법 정리  (0) 2019.07.04
피들러(Fiddler)와 프록시(Proxy)  (0) 2018.11.07