ホームページ  >  記事  >  ウェブフロントエンド  >  HTMLインジェクションとは何ですか

HTMLインジェクションとは何ですか

青灯夜游
青灯夜游オリジナル
2021-06-21 11:27:216188ブラウズ

HTML インジェクションは脆弱性であり、Web ページがユーザー指定の入力のサニタイズや出力の検証に失敗したときに発生するネットワーク攻撃の一種です。これにより、攻撃者は独自のペイロードを偽造し、脆弱なフィールドを通過することができます。悪意のある HTML コードがアプリケーションに挿入され、Web ページのコンテンツが変更され、機密データが取得されることもあります。

HTMLインジェクションとは何ですか

このチュートリアルの動作環境: Windows 7 システム、HTML5 バージョン、Dell G3 コンピューター。

HTML インジェクションとは何ですか?

HTML インジェクション (Hypertext Markup Language Injection) 中国語で「ハイパーテキスト マークアップ言語インジェクション」を意味します。ご存知のとおり、HTML にはさまざまなタグが含まれています。ユーザーが入力したデータを Web アプリケーションが十分に処理しないと、その場合、違法なユーザーによって送信された一部のデータには他の HTML タグが含まれている可能性があり、これらのデータはたまたまサーバーによって通常の HTML タグとして表示され、最終的には違法なタグが解析されます (フィッシングに適用できます)。ソーシャルエンジニアリングなど)、他のユーザーに多大な影響を与えます。

攻撃者は、独自のペイロードを偽造し、脆弱なフィールドを通じてアプリケーションに悪意のある HTML コードを挿入することで、Web ページのコンテンツを変更し、機密データを取得することさえできます。

HTML インジェクションと XSS の違い

XSS (クロスサイト スクリプティング) の中国語訳は「クロスサイト スクリプティング攻撃」です。XSS は本質的に HTML です。インジェクション攻撃の一種ですが、HTML インジェクションとは異なり、XSS はスクリプト タグを使用して JavaScript やその他のスクリプト プログラムを実行し、JavaScript を通じて機密データや一連の危険な操作を取得できます。一方、HTML インジェクションは HTML タグを使用してページのコンテンツを変更するだけです。

HTML インジェクション - 反映 (GET)

反映された HTML インジェクション (GET メソッド)

名入力html、姓としてテストを入力し、HTML の文字が赤に変わっていることを確認します。これは、作成した HTML コードが正常に実行され、この Web サイトに HTML インジェクションがあることを示します。

HTMLインジェクションとは何ですか

#HTML インジェクション - リフレクト (POST)

リフレクト HTML インジェクション (POST メソッド)

注: GET メソッドでデータを送信すると、送信されたデータはブラウザのアドレス バーに表示されますが、POST では表示されません。

上記の GET メソッドと同じです
姓は


html2

に入力され、姓は test に入力され、文字 html2 が見つかります。緑色に変わり、入力された HTML コードが正常に実行され、この Web サイトに HTML インジェクションがあることを示します。


HTMLインジェクションとは何ですか#HTML インジェクション - 反映 (現在の URL)

反映された HTML インジェクション (現在の URL)

#まず、ソース コードを分析しましょう

コア コード

 <div>

    <h1>HTML Injection - Reflected (URL)</h1>

    <?php  echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?>

</div>

このコードには、HTML ステートメントを実行して出力される PHP コードの一部があります。 「現在の URL:」という文字を入力し、$url 変数を呼び出して出力内容を追跡します。

プロテクションコード

$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= &#39;&#39;接受的参数来自请求头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"]" は、ドメイン名の背後にある完全なアドレス パスを取得することを意味します。

げっぷパケット キャプチャによるホスト パラメータ ページで変更が発生しました


HTMLインジェクションとは何ですか (2) 中
HTMLインジェクションとは何ですか

Whenレベルを中程度に設定し、次のステートメントを実行します

$url = "<script>document.write(document.URL)</script>";

ここでのドキュメント オブジェクトは HTML ドキュメント全体を表し、ページ内のすべての要素にアクセスするために使用できます。

document.write() は動的です ページにコンテンツを書き込みます
document.URL は同じウィンドウで別のページを開くための URL 属性を設定します

(3) high


はレベルを上げます。 high に設定すると、次のステートメントを実行します。
$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);

xss_check_3 関数がここで呼び出され、ホストの背後にある部分をフィルタリングして、注入できません。

HTML インジェクション - 保存型 (ブログ)

保存型 HTML インジェクション

注: リフレクション ページは更新後に存在しなくなりますが、ストレージ タイプはサーバー データベースに書き込まれ、更新後にも存在します。

したがって、蓄積型は反射型よりもはるかに有害です。

テキスト フィールドに

HTML

と入力すると、p タグが正常に解析され、HTML があることが示されます。注射。
HTMLインジェクションとは何ですか

推奨チュートリアル: 「html ビデオ チュートリアル

以上がHTMLインジェクションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。