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

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

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

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

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

Категории

Все категории
Loading categories
gha-lab-fb6df3d456 — Авторизованная исследовательская лаборатория безопасности, воспроизводящая CVE-2025-46820 (GHSA-cwj7-6v67-2cm4): GITHUB_TOKEN сохраняется в публично загружаемых CI-артефактах в phpgt/Dom. Снимок phpgt/Dom @ b73d7e8. | Kitploit
Инструменты/GitHubGitHub/pvharmo2/gha-lab-fb6df3d456
Анализ уязвимостейБезопасность облачных средБезопасность Цепочки ПоставокОбучение и ОбразованиеПодобранные Ресурсы
GitHubpvharmo2/gha-lab-fb6df3d456

gha-lab-fb6df3d456

Авторизованная исследовательская лаборатория безопасности, воспроизводящая CVE-2025-46820 (GHSA-cwj7-6v67-2cm4): GITHUB_TOKEN сохраняется в публично загружаемых CI-артефактах в phpgt/Dom. Снимок phpgt/Dom @ b73d7e8.

Репозиторий
22 ч 11 мин назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Автоматизированный исследовательский артефакт — не вышестоящий проект.

Этот репозиторий — одноразовая лаборатория, созданная автоматизированной средой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей рабочих процессов GitHub Actions. Это точный снимок phpgt/Dom на коммите b73d7e8b54963796132df99902c3224016511bb9 (2025-03-21), распространённый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.

Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которым они соответствовали на 2025-03-21; см. pinning.md в выводе среды для каждого изменения, внесённого в снимок.

Вопросы или возражения: [email protected]


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::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()