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 |