Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gha-lab-f1c8785cc8 — GitHub Actionsワークフローサンドボックス(CVE-2025-46820再現用) | Kitploit
ツール/GitHubGitHub/pvharmo2/gha-lab-f1c8785cc8
脆弱性分析エクスプロイト学習と教育厳選リソースラボと実践
GitHubpvharmo2/gha-lab-f1c8785cc8

gha-lab-f1c8785cc8

GitHub Actionsワークフローサンドボックス(CVE-2025-46820再現用)

リポジトリを見る
13日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
PHP 7 プロジェクトのためのモダンな DOM API

モダン DOM API

PHP ネイティブの DOMDocument を基盤として、このプロジェクトはブラウザでのクライアントサイドコードを扱う際に期待されるような、モダンな DOM API へのアクセスを提供します。

サーバーサイドコードで DOM 操作を行うことで、動的ページの構築方法が向上します。標準化されたオブジェクト指向インターフェースを利用することで、ページを事前処理することができ、ブラウザ、ウェブサーバー、コンテンツ配信ネットワークにメリットをもたらします。


ビルドステータス コード品質 コードカバレッジ 現在のバージョン PHP.Gt/Dom ドキュメント

使用例: こんにちは、あなた!

重要な注意: ここで示す例は説明目的のものであり、DOM を使用して要素の値に直接データを設定することは、ロジックとビューを密結合させてしまうため、悪い習慣と見なされます。データを DOM にバインドするためのより堅牢なソリューションについては、 ライブラリを参照してください。

DomTemplate

名前を入力する input 要素を持つフォームを含むページを考えてみましょう。フォームが送信されると、ページはあなたの名前で挨拶するはずです。

これは、ソース HTML ファイルをテンプレートとして扱う方法の簡単な例です。これは、{{curly braces}} のようなプレースホルダーや、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 仕様を表します。特定の型は Element::getElementType() で検出でき、ElementType 列挙値のいずれかを返します。
    • 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()、、、 で子ノードを挿入および削除
  • 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 に記載されます。

ツールをダウンロード
ChildNode::before
ChildNode::after
ChildNode::replaceWith()