IT 그리고 정보보안/Knowledge base

HTML Encoding

plummmm 2021. 4. 16. 04:36
반응형

HTML 인코딩에 대해 알아보자.

HTML 문서 에서 특수 기능을 하는 문자들이 있다.

이 문자들을 안전하게 브라우저에 표현하기 위해 사용하는 인코딩이다.

HTML 인코딩은 그니까, 쉽게 말하면 안전하게 -> 보안성을 높이기 위해 사용된다.

 

HTML 인코딩에서는 특정한 문자들을 나타내기 위해 

HTML 엔티티라는 것을 정의해 두었다. 예를 들어서.

 

위 표처럼 정의해 두기도 하였고..

기본적으로 HTML 인코딩하는 방법은 문자들을 아스키 코드값으로

10진수나 16진수값으로 변환하여 인코딩 할 수도 있다.

 

"  (큰따움표)    →   " , "

'  (작은따움표)  →   ' , '

 

어때여 쉽죠?? 그리고 HTML 인코딩에 대해 하나더.

 

검색엔진에서 HTML 인코딩을 검색하면

XSS(Cross-site-script)를 막기위한 대책으로 쓴다... 

라고 많은 블로그 포스팅에 적혀 있을 것이다.

 

 

일단 지금은 XSS를 모르는 상태이니까, 다음에 XSS 포스팅하면 공부한 후,

다시 여기로 돌아와서 보길 바람. XSS 안다고 가정하고 작성하겠음.

 

XSS는 HTML 페이지에서 <script> 테그 삽입이 가능하냐 안하냐에 따라

공격 여부를 결정한다. (보통의 경우는, 그래서 HTML 인코딩으로 모든 XSS공격을 막을 수있는건 아니다.)

 

웹페이지에 스크립트 삽입 → 사용자가 웹페이지 내용 수신 → 악성 스크립트 내용 서버에 수행

 

이런 과정으로  XSS가 이루어 지는데, <script> 부분을 HTML 인코딩하면 악성 스크립트 내용이 서버에 수행 되지 않는다.

정상적으로 HTML 인코딩을 수행하고 서버에 도달하여 디코딩하여 내용을 확인하지만 내용이 실행되지 않는다.

그리하여 XSS를 막을 수있는 거임.

 

1. <script> alert("ABC") </script>

                                                     

2. &lt;script&gt; alert("ABC") &lt;/script&gt;

                              

3. <script> alert("ABC") </script>

 

1->2

위 스크립트가 웹페이지에 삽입되면 HTML 인코딩으로 인코딩하도록 서버스크립트를 수정하면 다음과 같이 변한다.


2->3 

사용자는 인코딩된 상태로 내용을 수신하고, 다시 서버에 수행할 때 디코딩되어서 원래 형태를 찾아도 실행은 되지 않으므로 xss방지가 가능

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

웹개발 언어에 대한 정리  (0) 2021.04.16
Base64 Encoding  (0) 2021.04.16
URL Encoding  (0) 2021.04.15
ASCII Encoding  (0) 2021.04.15
HTTP (Hyper Text Transfer Protocol)  (0) 2021.04.15