본문 바로가기

기초 공부/웹

[WEB] WEB(웹) 표준 ? (feat. HTML 표준)

1.WEB(웹) 표준 (HTML 표준)이란?

 HTML 표준이라고도 하였지만, 사실은 웹에 적용되는 기술 등의 규칙을 정의하기에 웹 표준(Web Standard)에 가깝다.

 

 일반적으로 웹 표준은 월드 와이드 웹의 정의 및 기술 규격을 정의를 의미한다. 또한, 표준이기에 다양한 기구 또는 기관에서 각자의 표준을 정립하여 발표하기도 하였다.

 (Feat.해당 게시글에서는 큰 맥락으로 웹 표준의 본가격인 W3C 및 WHATWG만 언급하려고 한다.)

 

■ 참조 : https://en.wikipedia.org/wiki/Web_standards (웹 표준 위키 - 다양한 표준화 기구가 있음을 알 수 있다.)

 

2.W3C와 WHATWG

 1) W3C (World Wide Web Consortium)

 웹 표준과 가이드라인을 개발하고, 권고안을 발표하는데 목적을 가지고 설립되었으며 어떤 환경에서도 웹을 이용할 수 있어야 한다는 "웹 상호운용성(Web Interoperability)"을 목표로 하는 국제 컨소이엄이다. 

 

 다양한 웹 표준을 제정하였으며, 일반적으로 잘 알려진 HTML, SOAP, CSS, DOM, XML 등에 대한 기반적인 표준을 제정하였다. 즉, 현재는 아니지만 현대의 대표적인 웹 표준을 제정하였다.

 

■ 참조 : https://en.wikipedia.org/wiki/World_Wide_Web_Consortium (위키 - w3c)

 

 2) WHATWG (Web Hypertext Application Technology Working Group)

 애플, 모질라 재단, 오페라,  구글 등의 개발자 또는 개인들의 모임. 하지만 실제로는 각 브라우저 엔진 개발사들의 인원들이 포함됨에 따라 강력(?)해졌다.

 

■ 참조 : https://en.wikipedia.org/wiki/WHATWG (위키 - whatwg)

 

3) W3C vs WHATWG (W3C와 WHATWG의 차이점)

 전통과 혁신은 서로 때놓을 수 없지만, 언제나 서로 친한 관계도 아니다. W3C가 전통과 기존의 기득권을 가진 입장이라면, WHATWG는 혁신의 신흥세력의 입장이라고 볼 수 있다.

 

 기존에는 W3C에서 정의된 웹 표준을 기반으로 웹 브라우저를 개발하였기에, 브라우저 엔진 개발사들은 W3C의 영향력에 묶일 수 밖에 없었다. 

 


브라우저 엔진 개발사 :  "나, 이런 기능 좀 만들고 싶은데?"
w3c :  "안되, 아직 그런 표준은 없어."
브라우저 엔진 개발사 :  "..."

 하지만, 시대의 흐름이 변화면서 다양한 서비스들이 웹을 통해 지원할 수 있도록 요구되었으며 "기술"을 "표준"이 따라가지 못하는 상태가 발생하기 시작했다.

 

 즉, 웹 서비스를 이용하는 고객들의 요구를 충족할 수 있는 기능 및 기술을 지원하기 위해서는 브라우저 엔진 개발사에서 API 등을 지원할 필요성이 발생하였고, 이를 위해 브라우저 엔진 개발사들이 "표준"보다 앞서기 시작했다.


웹 서비스 고객 : "이런, 기능으로 좀 편하게 이용하게 만들어 주세요."
웹 서비스 개발사 : "어? 이런 기능을 지원하는 브라우저 API가 없는데? 브라우저 개발사님?"
브라우저 엔진 개발사 : "아... 이런게 한 두번도 아니고, 일단 서비스가 되어야 하니 만들고 보자."
w3c : "어?, 아직 표준 안 만들었는데?"
브라우저 엔진 개발사 : "알빠노"

 하지만, "표준"이라는 부분에서 어긋나기 시작하면 "웹 상호운용성(Web Interoperability)"에서 문제가 발생할 수 있고, 브라우저 엔진 개발사들도 서로 간 호환성을 목적으로  뭉치기 시작하였고, 이는 기술의 혁신으로 인해 또 다시 "표준"을 정의하게 되었다.

 

 그렇기에, W3C의 HTML 표준을 각, HTML4, HTLM5으로 구분하며 정립되었지만 WHATWG는 HTML Living Standard로 정립한다. 즉, 표현적으로 항상 진화하는 HTML 표준(웹 표준)을 정립한 것이다.

 

3.근데 왜 HTML 표준 문서를 봐야할까?

 이전에 웹 브라우저 게시물을 작성하면서 브라우저 엔진 종류에 대해서도 간략하게 구분해보았다. 이 때, 각 브라우저 엔진들은 HTML 표준 문서를 기반으로 각 자 필요한 부분을 가져가 이용한다.

 

■ 참조 : https://yomy00.tistory.com/7

 

 즉, HTML 표준 문서는 기본적으로 어떤 기능과 옵션이 어떤 결과를 보여주고 동작하는지 알 수 있는 정보를 제공한다. 이는 웹 서비스의  구현만이 아닌 취약점을 점검할 시 상당한 정보를 제공한다.

 

 일반적으로 XSS 취약점 항목에 대한 점검 시, 많이 알려진 "script" Tag 또는 "onmouseover"라는  이벤트 핸들러를 이용한다. 이 때, 웹 개발자가 입력받는 파라미터 중 "sccript" 태그와 "onmouseover"라는 이벤트 핸들러를 제거하도록 할 시 안전한지 고민을 해볼 필요가 있다.

 

 악용될 수 있는 HTML Tag가 없는지, 또는 추가적인 이벤트 핸들러가 있는지에 대한 고민이 포함될 수 있다. 이는 역으로 취약점 점검자의 입장도 마찬가지다. 점검대상 서비스에서 입력받는 파라미터 중 어떤 HTML Tag와 이벤트 핸들러를 식별하는지 파악할 수 있기 때문이다.

 

  그러니, 심심할 때마다 한 번씩 들어가봐서 무엇인가 추가되거나 변경된 점이 있는지 살펴보는 것도 추천한다.

 

■ 참조 : https://html.spec.whatwg.org/multipage/ (HTML Living Standard)

 

 P.s "정리된 HTML Tag 목록과 이벤트 핸들러를 어떻게 활용할 수 있을까?" 란 고민도 해보자.

'기초 공부 > ' 카테고리의 다른 글

[WEB] 웹 브라우저 개발자 도구  (2) 2023.12.05
[WEB] JWT란?  (0) 2023.01.04
[WEB] 인증토큰이란?  (0) 2022.12.28
[WEB] HTML / CSS / Javascript 란 ? _ 3편 Javascript  (0) 2022.11.03
[WEB] HTML / CSS / Javascript 란 ? _ 2편 CSS  (0) 2022.11.01