Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/pvharmo2/gha-lab-f1c8785cc8
Vulnerability AnalysisExploitationLearning & EducationCurated ResourcesLabs & Practice
GitHubpvharmo2/gha-lab-f1c8785cc8

gha-lab-f1c8785cc8

GitHub Actions 워크플로우 샌드박스 for CVE-2025-46820 재현

저장소 보기
13일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
The modern DOM API for PHP 7 projects

Modern DOM API

PHP의 네이티브 DOMDocument 위에 구축된 이 프로젝트는 브라우저에서 클라이언트 측 코드로 작업할 때 기대할 수 있는 현대적인 DOM API에 대한 접근을 제공합니다.

서버 측 코드에서 DOM 조작을 수행하면 동적 페이지를 구축하는 방식을 향상시킬 수 있습니다. 표준화된 객체 지향 인터페이스를 활용하면 페이지를 사전 처리할 수 있어 브라우저, 웹 서버 및 콘텐츠 전송 네트워크에 이점을 제공합니다.


Build status Code quality Code coverage Current version PHP.Gt/Dom documentation

사용 예시: 안녕하세요, 당신!

중요 참고 사항: 여기에 표시된 예시는 설명 목적으로만 제공되지만, DOM을 사용하여 요소의 값에 직접 데이터를 설정하는 것은 로직을 뷰에 밀접하게 결합시키므로 좋지 않은 관행으로 간주됩니다. DOM에 데이터를 바인딩하는 더 견고한 솔루션은 DomTemplate 라이브러리를 참조하세요.

이름을 입력하는 input 요소가 있는 양식이 포함된 페이지를 생각해 보세요. 양식이 제출되면 페이지는 이름으로 당신에게 인사해야 합니다.

이것은 소스 HTML 파일을 템플릿으로 취급할 수 있는 방법의 간단한 예시입니다. 이는 {{중괄호}}와 같은 비표준 기술을 사용하거나 PHP 내에서 오류가 발생하기 쉬운 echo '<div class='easy-mistake'>' . $content['opa'] . '</div>' HTML 구문을 사용하지 않고도 동적 콘텐츠를 제공하기 위해 더 고급 템플릿 페이지에 쉽게 적용할 수 있습니다.

소스 HTML (name.html)

root@kitploit:~
<!doctype html>
<h1>
	Hello, <span class="name-output">you</span> !
</h1>

<form>
	<input name="name" placeholder="Your name, please" required />
	<button>Submit</button>
</form>

이름을 주입하는 데 사용되는 PHP (index.php)

root@kitploit:~
<?php
use Gt\Dom\HTMLDocument;
use Gt\Dom\HTMLElement\HTMLSpanElement;
require "vendor/autoload.php";

$html = file_get_contents("name.html");
$document = new HTMLDocument($html);

if(isset($_GET["name"])) {
	$span = $document->querySelector(".name-output");
	$span->innerText = $_GET["name"];
}

echo $document;

주요 기능 한눈에 보기

  • W3C의 DOM Living Standard와 호환:
    • Element 타입은 HTMLAnchorElement(<a>), HTMLButtonElement(<button>), HTMLInputElement(<input>), HTMLTableSectionElement(<thead>, <tbody>, <tfoot>) 등과 같은 모든 HTMLElement 사양을 나타냅니다. 특정 타입은 ElementType 열거형 값 중 하나를 반환하는 Element::getElementType()으로 감지할 수 있습니다.
    • EnumeratedValueException, HierarchyRequestError, IndexSizeException 등 다양한 유형의 예외를 포착하기 위한 DOMException 확장.
    • FileList, StyleSheet, VideoTrackList, WindowProxy 등의 클래스를 포함한 클라이언트 측 기능 스텁.
  • DOM 레벨 4+ 기능:
    • Element::querySelector() 및 (Element::querySelectorAll())를 통해 CSS 선택기를 사용하여 요소 참조
    • ClassList를 사용하여 요소의 클래스 추가/제거/토글
    • Element::previousElementSibling, Element::nextElementSibling, Element::children, Element::lastElementChild 및 firstElementChild 등을 사용하여 Element 전용 노드 탐색
    • ChildNode::remove(), ChildNode::before, ChildNode::after, ChildNode::replaceWith()를 사용하여 자식 노드 삽입 및 제거
  • HTMLDocument의 표준 속성:
    • anchors
    • forms
    • image
    • links
    • scripts
    • title

알려진 제한 사항 / W3C 사양 준수

이 저장소는 https://dom.spec.whatwg.org/ 의 DOM 사양에 최대한 정확하게 맞추는 것을 목표로 합니다. v4.0.0 기준으로 모든 기능이 구현되어 있으며, 표준과의 다음과 같은 사소하지만 불가피한 차이점이 있습니다:

  • 요소의 tagName 속성은 대문자입니다.
  • HTMLElement 타입을 확인하려면 Element::getElementType()을 호출해야 합니다. 예를 들어 instanceof와 함께 사용할 수 있는 Element의 하위 클래스는 없습니다.
  • DOM 사양은 클라이언트 측에서만 구현할 수 있는 기능을 정의합니다. 예를 들어, HTMLInputElement::files는 브라우저 인터페이스를 통해 사용자가 선택한 모든 파일을 열거하는 FileList를 반환합니다. 이러한 종류의 기능은 서버 측에서 구현하는 것이 불가능하지만 사양과의 일관성을 위해 스텁 처리되었습니다. 이 라이브러리 내에서 클라이언트 측 기능을 사용하려고 하면 ClientSideOnlyFunctionalityException이 발생합니다.

데이터 바인딩 및 페이지 템플릿 기능

이 저장소는 DOM 사양에 최대한 정확하게 맞추는 것을 목표로 합니다. 저장소의 확장은 https://php.gt/domtemplate 에서 제공되며, 사용자 정의 요소와 템플릿 속성을 통해 페이지 템플릿 및 데이터 바인딩을 추가하여 WebComponents와 같은 서버 측 기능을 도입합니다.

PHP 8.4 네이티브 HTMLDocument

PHP 8.4 릴리스 이후, PHP에 네이티브로 제공되는 새로운 HTMLDocument 클래스가 추가되었습니다. 네이티브 바인딩이 있으므로 모든 작업이 훨씬 빠릅니다. PHPGT의 Dom 구현이 새로운 네이티브 코드를 활용하도록 하는 작업이 시작되었습니다. 다행히도 DOM은 매우 잘 정의된 표준이므로 어떤 일이 발생하든 코드에 최소한의 변경 또는 변경이 필요하지 않습니다.

php84-benchmark 브랜치의 벤치마크를 직접 확인해 보세요: 대부분의 작업이 네이티브 구현으로 전환함으로써 90% 이상의 속도 향상이 기록되었습니다!

네이티브 클래스 구현을 향한 더 많은 작업이 진행되면 추가 정보가 readme에 제공될 것입니다.

도구 다운로드