日本語

開発者ツール · HTML エンティティ エスケープ

HTML でエスケープする必要がある 5 文字とそれぞれの文字が危険である理由

· 仕組み

html エンコード セキュリティ

HTML でエスケープする必要がある 5 文字と、それぞれの文字が危険である理由をブラウザーセーフな文字参照図として示します
オリジナル ToolAcre ベクトル イラスト

HTML エスケープは、& < > " および ' の 5 文字にまとめられます。この投稿では、それぞれがマークアップで果たす役割、リストがコンテキストに依存する理由、およびそれぞれのエンティティがどのように選択されるかについて説明します。

タグを早期に閉じたコメント — ユーザーのテキストをマークアップに変換する、迷走した < と >

タグを早期に閉じたコメント — ユーザーのテキストをマークアップに変換する、野良の < と > 。実装では常に、アンパサンド、小なり、大なり、二重引用符、およびアポストロフィがマップされます。アポストロフィは 10 進数の参照番号 39 になりますが、他の 4 つはよく知られた名前付き形式を使用します。

HTML エスケープ文字を検証するには、ユーザーが送信したテキストをページにレンダリングする開発者用に閉じられたコメントを作成します。タグをしばらく保存しておく 5 文字ポリシーは迷走を生み、それが変わりました。ユーザーのテキストがどこで消費されるかを特定します。マークアップに関する観察は HTML テキストのみに属します。

& まず、常に — エスケープ文字自体をエスケープする必要がある理由と、エスケープ文字をスキップするとどうなるか

& まず最初に、エスケープ文字自体をエスケープする必要がある理由と、エスケープ文字をスキップするとどうなるかについて説明します。単一のコードポイント ループにより、置換順序のバグが防止されます。以前の置換によって導入されたアンパサンドは二度とアクセスされないため、エンコーダは同じパス中に自身の出力をエスケープしません。

ユーザーが送信したテキストをページにレンダリングする開発者は、5 文字のポリシーを渡す前にエスケープ文字自体を記録する必要がある理由を常に最初にテストできます。エスケープされた内容とその後の内容を比較し、スキップした場合に何が起こるかを調べます。この HTML エスケープ文字の結果は、実行可能なコンテキストではなく、それを説明しています。

テキスト コンテンツ内の < と > — トークナイザーがタグの開始をどのように判断するか、および主に対称性のために > がエスケープされる理由

テキスト コンテンツ内の < と > — トークナイザーがタグが開始されたことをどのように判断するか、また主に対称性のために > がエスケープされる理由。 HTML テキスト内の「未満」マークアップを開始します。 「より大きい」は、その危険性がパーサーの状態に依存する場合でも、一貫してエンコードされるため、スニペットがテキストと引用符で囲まれた属性の間を移動するときの出力が予測可能になります。

テキスト コンテンツを 5 文字の短いポリシー サンプルに分離します。トークナイザーがリテラル ソースとしてどのように決定するかを示し、開始されたタグを目的地まで追跡し、API 読み取り値とエスケープされる理由に名前を付けます。 HTML エスケープ文字の場合、ほとんどの対称性についてはパーサーに依存する証拠が残ります。

属性値の引用符 — " と '、および使用する属性区切り文字によってどれが重要であるかが決まる理由

属性値の引用符 — " と '、および使用する属性区切り文字がどれが重要であるかを決定する理由。属性を囲む区切り文字に関係なく、両方の引用符文字がエンコードされます。これは、引用符で囲まれた HTML 属性に関しては控えめですが、属性名、スキーム、またはダウンストリーム言語は検証されません。

属性値の引用符を境界実験として扱います。ユーザーが送信したテキストをページにレンダリングする開発者は、5 文字のポリシー操作を 1 つ実行し、変更する前に使用する属性区切り文字を 1 文字ずつ検査して、どれがどれであるかを決定する必要があります。クリティカルに関する主張は、この HTML 層で停止します。

実用的な例: 生成されたエンティティとレンダリングされた結果の 5 つすべてを含むスニペットをエスケープする

実用的な例: 生成されたエンティティとレンダリングされた結果の 5 つすべてを含むスニペットをエスケープします。入力 & < > " アポストロフィの場合、すべてのモードは & < > " ' を返します。通常のスペースはスペースのままで、5 つの置換はソース順に表示されます。

顧客資料の代わりに無害な入力を使用して をエスケープする実際の例を再現します。 5 文字すべてを含むスニペットを記録し、生成されたエンティティを観察し、意図的な 5 文字のポリシー パスをすべてカウントします。この HTML エスケープ文字の痕跡により、ユーザーが送信したテキストをページにレンダリングする開発者は、推測することなく、レンダリングされた結果と 5 文字のポリシー証拠を評価できるようになります。

名前付き形式と数値形式 — 「 vss 」および「 vss 」。古いパーサーでは安全です。

名前付き形式と数値形式 — 「 vs 」および「 vs 」。古いパーサーでは安全です。デコーダは、「 と数値 」の両方に加え、「 」と「 」を受け入れます。エンコーダは、文書化された移植性の選択に合わせて、「 」ではなく「 」を意図的に出力します。

5 文字のポリシー レビュー中に、名前付き形式と数値形式、引用符と 34 および 39 とアポスを並べて配置します。ユーザーが送信したテキストをページにレンダリングする開発者は、変換時またはダウンストリームで変更しても安全かどうかを判断できます。古いパーサーに関する HTML エスケープ文字の結論を一般的なセキュリティ主張から外してください。

これでカバーされないもの — <script>、イベント ハンドラー、または URL 内でのエスケープ(別のルールが必要)

これでカバーされないもの — <script>、イベント ハンドラー、または URL 内でのエスケープは、別のルールが必要です。これらの 5 つの置換は、HTML テキストと引用符で囲まれた属性のエスケープのみを説明します。 JavaScript、CSS、SQL、および URL コンポーネントには独立した文法があり、エンティティ出力は一般的なサニタイザーではありません。

5 文字のポリシーを実行する前に、これが実行しないことを定義してください。スクリプト内のカバー エスケープをコントロールとして保存し、イベント ハンドラーまたは URL の背後にあるコード ポイントを検査し、異なるルールが必要なコードを次のインタープリターにマップします。これにより、HTML エスケープ文字を調査するページにユーザーが送信したテキストをレンダリングする開発者にとって、5 文字のポリシー証拠が監査可能になります。

要点: すべてのパーサー コンテキストではなく、HTML テキストと引用符で囲まれた属性に 5 文字

要点: すべてのパーサー コンテキストではなく、HTML テキストと引用符で囲まれた属性に 5 文字。このツールを使用して、正確な 5 文字の変換を検査し、その結果をルールが理解している HTML コンテキストにのみ配置します。 「どこにでも貼り付け」は意図的に約束されていません。

取り出した 5 文字を監視可能な 5 文字のポリシー出力に接続します。 HTML テキストを保持し、ワンパス結果の横に引用符を付けてから、すべてのパーサーがコンテキストに入るわけではない属性がどこにあるかを確認します。ユーザーが送信したテキストをページにレンダリングする開発者は、5 文字のポリシー証拠をナロー HTML エスケープ文字の検出結果としてレビューできるようになりました。この記事の背後にある実際的な決定は具体的です。HTML エスケープは & < > " と ' の 5 文字に集約されます。この投稿では、それぞれがマークアップで果たす役割、リストがコンテキストに依存する理由、およびそれぞれのエンティティがどのように選択されるかについて説明します。読者のアクションも同様に具体的です。HTML エンティティ エスケープ機能へのリンクと、マークアップ文字を含むスニペットのエスケープを示し、エスケープされる正確な文字セットについては、ツール ページの「サポートされる入力と出力」セクションを参照するよう読者に案内します。