Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/pvharmo2/gha-lab-f1c8785cc8
Анализ уязвимостейЭксплуатацияОбучение и ОбразованиеПодобранные РесурсыЛаборатории и Практика
GitHubpvharmo2/gha-lab-f1c8785cc8

gha-lab-f1c8785cc8

GitHub Actions workflow песочница для воспроизведения CVE-2025-46820

Репозиторий
13 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
The modern DOM API for PHP 7 projects

Современный DOM API

Построенный на основе нативного DOMDocument из PHP, этот проект предоставляет доступ к современным DOM API, как вы могли бы ожидать при работе с клиентским кодом в браузере.

Выполнение DOM-манипуляций в серверном коде улучшает способы создания динамических страниц. Использование стандартизированного объектно-ориентированного интерфейса означает, что страница может быть обработана заранее, что приносит пользу браузерам, веб-серверам и сетям доставки контента.


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

Пример использования: Привет, ты!

Важное примечание: пример, показанный здесь, приведён в иллюстративных целях, но использование DOM для прямой установки данных в значения элементов тесно связывает логику с представлением, что считается плохой практикой. Пожалуйста, обратитесь к библиотеке DomTemplate для более надёжного решения по привязке данных к DOM.

Рассмотрим страницу с формой и полем ввода для ввода вашего имени. Когда форма отправлена, страница должна поприветствовать вас по имени.

Это простой пример того, как исходные HTML-файлы могут использоваться в качестве шаблонов. Это легко применить к более продвинутым страницам-шаблонам для предоставления динамического контента без использования нестандартных приёмов, таких как {{фигурные скобки}} для плейсхолдеров или подверженной ошибкам конструкции HTML из PHP, как echo '<div class='easy-mistake'>' . $content['opa'] . '</div>'.

Исходный 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;

Возможности с первого взгляда

  • Совместимость с Living Standard DOM от W3C:
    • Тип Element представляет все спецификации HTMLElement, такие как HTMLAnchorElement (<a>), HTMLButtonElement (<button>), HTMLInputElement (<input>), HTMLTableSectionElement (<thead>, <tbody>, <tfoot>) и т.д. Конкретный тип можно определить с помощью Element::getElementType(), который возвращает одно из значений перечисления ElementType.
    • Расширения DOMException для перехвата различных типов исключений, таких как EnumeratedValueException, HierarchyRequestError, IndexSizeException и т.д.
    • Заглушки клиентской функциональности, включая классы для FileList, StyleSheet, VideoTrackList, WindowProxy и т.д.
  • Функциональность DOM уровня 4+:
    • Ссылки на элементы с помощью CSS-селекторов через Element::querySelector() и (Element::querySelectorAll())
    • Добавление/удаление/переключение классов элементов с помощью ClassList
    • Обход узлов только типа Element с помощью Element::previousElementSibling, Element::nextElementSibling, Element::children, Element::lastElementChild и firstElementChild и т.д.
    • Вставка и удаление дочерних узлов с помощью , , ,
  • Стандартные свойства HTMLDocument:
    • anchors
    • forms
    • image
    • links
    • scripts
    • title

Известные ограничения / соответствие спецификации W3C

Этот репозиторий стремится быть максимально точным по отношению к спецификации DOM на https://dom.spec.whatwg.org/ — начиная с версии v4.0.0 вся функциональность реализована со следующими незначительными, но неизбежными отклонениями от стандарта:

  • Свойство tagName элементов записано в верхнем регистре.
  • Для проверки типа HTMLElement необходимо вызывать Element::getElementType() — подклассы Element для использования с instanceof, например, недоступны.
  • Спецификация DOM определяет функциональность, которую можно реализовать только на клиентской стороне. Например, HTMLInputElement::files возвращает FileList, перечисляющий все файлы, выбранные пользователем через интерфейс браузера. Такую функциональность невозможно реализовать на серверной стороне, но она была заглушена для согласованности со спецификацией. Попытка использования клиентской функциональности в этой библиотеке вызывает ClientSideOnlyFunctionalityException.

Привязка данных и функции шаблонов страниц

Этот репозиторий предназначен для максимально точного соответствия спецификации DOM. Расширение репозитория доступно на https://php.gt/domtemplate, которое добавляет шаблонизацию страниц и привязку данных через пользовательские элементы и атрибуты шаблонов, вводя серверную функциональность, подобную WebComponents.

Нативный HTMLDocument в PHP 8.4

Начиная с выпуска PHP 8.4, в PHP нативно появился новый класс HTMLDocument. Благодаря нативным привязкам все операции выполняются значительно быстрее. Начата работа по адаптации реализации Dom от PHPGT для использования нового нативного кода. К счастью, DOM — это очень хорошо определённый стандарт, поэтому что бы ни произошло, потребуется минимальное количество изменений или их отсутствие в вашем коде.

Взгляните сами на бенчмарки в ветке php84-benchmark: для большинства операций зафиксировано увеличение скорости на 90% и более при переходе на нативную реализацию!

Более подробная информация будет изложена в readme после того, как будет проделана дальнейшая работа по реализации нативных классов.

Скачать инструмент
ChildNode::remove()
ChildNode::before
ChildNode::after
ChildNode::replaceWith()