HTML インジェクションは脆弱性であり、Web ページがユーザー指定の入力のサニタイズや出力の検証に失敗したときに発生するネットワーク攻撃の一種です。これにより、攻撃者は独自のペイロードを偽造し、脆弱なフィールドを通過することができます。悪意のある HTML コードがアプリケーションに挿入され、Web ページのコンテンツが変更され、機密データが取得されることもあります。
このチュートリアルの動作環境: Windows 7 システム、HTML5 バージョン、Dell G3 コンピューター。
HTML インジェクション (Hypertext Markup Language Injection) 中国語で「ハイパーテキスト マークアップ言語インジェクション」を意味します。ご存知のとおり、HTML にはさまざまなタグが含まれています。ユーザーが入力したデータを Web アプリケーションが十分に処理しないと、その場合、違法なユーザーによって送信された一部のデータには他の HTML タグが含まれている可能性があり、これらのデータはたまたまサーバーによって通常の HTML タグとして表示され、最終的には違法なタグが解析されます (フィッシングに適用できます)。ソーシャルエンジニアリングなど)、他のユーザーに多大な影響を与えます。
攻撃者は、独自のペイロードを偽造し、脆弱なフィールドを通じてアプリケーションに悪意のある HTML コードを挿入することで、Web ページのコンテンツを変更し、機密データを取得することさえできます。
XSS (クロスサイト スクリプティング) の中国語訳は「クロスサイト スクリプティング攻撃」です。XSS は本質的に HTML です。インジェクション攻撃の一種ですが、HTML インジェクションとは異なり、XSS はスクリプト タグを使用して JavaScript やその他のスクリプト プログラムを実行し、JavaScript を通じて機密データや一連の危険な操作を取得できます。一方、HTML インジェクションは HTML タグを使用してページのコンテンツを変更するだけです。
反映された HTML インジェクション (GET メソッド)
名入力html、姓としてテストを入力し、HTML の文字が赤に変わっていることを確認します。これは、作成した HTML コードが正常に実行され、この Web サイトに HTML インジェクションがあることを示します。
リフレクト HTML インジェクション (POST メソッド)注: GET メソッドでデータを送信すると、送信されたデータはブラウザのアドレス バーに表示されますが、POST では表示されません。
上記の GET メソッドと同じです姓は
html2
に入力され、姓は test に入力され、文字 html2 が見つかります。緑色に変わり、入力された HTML コードが正常に実行され、この Web サイトに HTML インジェクションがあることを示します。
#HTML インジェクション - 反映 (現在の URL)
#まず、ソース コードを分析しましょうコア コード
<div> <h1>HTML Injection - Reflected (URL)</h1> <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?> </div>
プロテクションコード
$url= ""; switch($_COOKIE["security_level"]) { case "0" : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; //$url= ''接受的参数来自请求头HOST和URL break; case "1" : $url = "<script>document.write(document.URL)</script>"; break; case "2" : $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]); break; default : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; break; } <select name="security_level"> <option value="0">low</option> <option value="1">medium</option> <option value="2">high</option> </select>
ディフェンスコードを読むと、設定の難易度によって呼び出されるディフェンスコードが異なることが分かります。
(1) LOWレベルを Low に設定する場合、ここで次のステートメント
$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$_SERVER を実行します [ "HTTP_HOST"] は、現在のドメイン名を取得することを意味します。
ここで、$_SERVER["REQUEST_URI"]" は、ドメイン名の背後にある完全なアドレス パスを取得することを意味します。
げっぷパケット キャプチャによるホスト パラメータ ページで変更が発生しました
(2) 中
$url = "<script>document.write(document.URL)</script>";
document.URL は同じウィンドウで別のページを開くための URL 属性を設定しますここでのドキュメント オブジェクトは HTML ドキュメント全体を表し、ページ内のすべての要素にアクセスするために使用できます。
document.write() は動的です ページにコンテンツを書き込みます
(3) highはレベルを上げます。 high に設定すると、次のステートメントを実行します。
$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
HTML インジェクション - 保存型 (ブログ)
保存型 HTML インジェクション
注: リフレクション ページは更新後に存在しなくなりますが、ストレージ タイプはサーバー データベースに書き込まれ、更新後にも存在します。 HTML
したがって、蓄積型は反射型よりもはるかに有害です。
テキスト フィールドに
推奨チュートリアル: 「html ビデオ チュートリアル 」
以上がHTMLインジェクションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。