일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- root-me
- openvas
- JSP 우회
- 배시쉘 버그
- DNS 정보수집
- SecureCheq
- metasploit
- Lampiao
- WHISTL
- SQL Injection
- MySQL 원격 로그인.
- 취약점
- File Upload-ZIP
- assert()
- msfconsole
- MBSA
- Nexpose
- 필터링 우회
- exploit-db
- 파일 업로드
- code injection
- ctf
- Canary
- shellshock
- bash shell bug
- GHDB
- aslr
- ASCII-Aromor
- 메모리 보호
- file upload
- Today
- Total
나만의 연습장
DOM이란? 본문
DOM이란?
문서 객체 모델(The Document object Model ; DOM)은 HTML, XML 문서의 프로그래밍 interface이다. DOM은 문서의 구조화된 표현 (structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 돕는다. DOM은 구조화된 nodes와 property와 method를 갖고 있는 objects로 문서를 표현한다. 이들은 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결 시켜주는 역할을 담당한다.
웹 페이지는 일종의 문서(document)다. 이 문서는 웹 브라우저를 통해 그 내용이 해석되어 웹 브라우저 화면에 나타나거나 HTML 소스 자체로 나타나기도 한다. 동일한 문서를 사용하여 이처럼 다른 형태로 나타날 수 있다는 점에 주목할 필요가 있다. DOM은 동일한 문서를 표현하고, 저장하고, 조작하는 방법을 제공한다. DOM은 웹 페이지의 객체 지향 표현이며, 자바스크립트와 같은 스크립팅 언어를 이용해 DOM을 수정할 수 있다.
W3C DOM, WHATWG DOM 표준은 대부분의 브라우저에서 DOM을 구현하는 기준이다. 많은 브라우저들이 표준 규약에서 제공하는 기능 외에도 추가적인 기능들을 제공하기 때문에 사용자가 작성한 문서들이 각기 다른 DOM이 적용된 다양한 브라우저 환경에서 동작할 수 있다는 사실을 항상 인지하고 있어야 한다.
예를 들어, 표준 DOM에서는 문서 안에서 모든 <P> elements에 대한 list를 리턴하는 getElementsByTagName method를 정의하고 있다.
|
웹 페이지를 수정하거나 생성하는데 사용되는 모든 property, method, event 들은 objects로 구성된다. 예를 들어 document object는 document 자체를 의미하며, table object는 HTML table에 접근하기 위한 HTMLTableElement DOM 인터페이스를 구현한 것이다. 이 문서는 Gecko 기반의 브라우저에서 구현된 DOM에 대한 object-by-object reference 를 제공한다.
DOM과 자바스크립트
위에서 사용된 예제는 JavaScript이다. 위의 예제는 자바스크립트로 작성되었지만 문서(document)와 문서의 요소(element)에 접근하기 위해 DOM이 사용되었다. DOM은 프로그래밍 언어는 아니지만 DOM이 없어다면 자바스크립트 언어는 웹 페이지 또는 XML페이지 및 요소들과 관련된 모델이나 개념들에 대한 정보를 갖지 못하게 된다. 문서의 모든 element -전체 문서, 헤드, 문서 안의 table, table header, table cell 안의 text - 는 문서를 위한 documnet object model의 한 부분이다. 때문에, 이러한 요소들을 DOM과 자바 스크립트와 같은 스크립팅 언어를 통해 접근하고 조작 할 수 있는 것이다.
초창기에는 자바스크립트와 DOM가 밀접하게 연결되어 있었지만 나중에는 각각 분리되어 발전해 왔다.
페이지 콘텐츠(the page comtent)는 DOM에 저장되고 자바스크립트를 통해 접근하거나 조작할 수 있다.
API (web or XML page) = DOM + JS (scripting language)
DOM은 프로그래밍 언어와 독립적으로 디자인되었다. 때문에 문서의 구조적인 표현은 단일 API를 통해 이용가능하다. 이 문서에서는 자바스크립트를 주로 사용하였지만, DOM의 구현은 어떠한 언어에서도 가능하다.
아래의 예제는 파이썬을 사용한 것이다.
|
DOM에 어떻게 접근할 수 있는가?
DOM을 사용하기 위해 특별히 해야할 일은 없다. 각각의 브라우저는 자신만의 방법으로 DOM을 구현하였으며, 이로 인해 실제 DOM 기준을 따르는지 확인해야 하는 번거러움이 발생하였다. 모든 웹 브라우저는 스크립트가 접근할 수 있는 웹 페이지를 만글기 위해 어느 정도의 DOM을 항상 사용한다.
스크립트를 작성할때 (<script>), 문서 자체를 조작하거나 문서의 children을 얻기위해 document 또는 window elements를 위한 API를 즉시 사용할 수 있다. DOM 프로그래밍은 아래처럼 window object로 부터 alert()함수를 사용하여 alert message를 표시하는 매우 간단한 것일 수도 있고 다음번 예제처럼 새로운 content를 작성하는 복잡한 DOM이 될수 도 있다.
<body onload="window.alert('welcome to my home page!');"> |
아래의 자바스크립트는 문서가 로드될 때 (모든 DOM을 사용할 수 있게 되는 때)실행되는 함수를 정의하였다.
이 함수는 새로운 H1 element를 생성하고, element에 text를 추가하며, H1을 이 문서의 트리에 추가한다.
|
중요한 데이터 타입들
이 문서는 objects 와 types 을 최대한 간단하게 설명하려 한다. API 에는 우리가 반드시 알고 있어야 할 수많은 data types 이 있다는 사실을 염두해 두기 바란다. 이 문서에서는 nodes 는 element
s 로, 노드의 arrays 는 nodeList
s(또는 element
s), attribute 노드들은 attribute
s 로 표현하였다.
아래의 표는 이러한 data types 에 대한 간략한 설명이다.
document | member 가 document type 의 object 를 리턴할 때(예를 들어 element의 |
element |
|
nodeList |
list.item(1) list[1] 위의 방식들은 동일한 것이다. nodeList object 의 단일 method 이다. 두번째 방식은 list 에서 두번째 item 을 fetch 하는 전형적인 array syntax 이다. |
attribute | attribute 가 member 에 의해 리턴되는 것은(예를 들어 |
namedNodeMap |
|
'용어' 카테고리의 다른 글
암호화 복호화 (0) | 2018.11.19 |
---|---|
OWASP TOP 10 (0) | 2018.11.12 |
[HTTP] 쿠키와 세션 (0) | 2018.11.12 |
스크립트란? (0) | 2018.11.12 |
캐슬 (CASTLE) (0) | 2018.10.28 |