日本語

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

二重エスケープ HTML: その方法と方法<何が起こるか、そしてそれを修正する方法

· 仕組み

html エンコード デバッグ

二重エスケープされた HTML: エンティティの表記法amp;およびエンティティ表記法。ブラウザセーフな文字参照図として表示される問題とその修正方法
オリジナル ToolAcre ベクトル イラスト

&ページ上では、テキストが 2 回エスケープされたことを意味します (通常は 1 回はテンプレートによって、もう 1 回は手動で)。この投稿では、関係するレイヤー、ソース内のパターンを特定する方法、安全なデコード パスの数について説明します。

ライブページの「フィッシュ&チップス」という商品 — 具体的な二重脱出とそれがどのように審査をすり抜けたか

ライブページの「フィッシュ&チップス」という製品 — 具体的な二重回避とそれがどのように審査をすり抜けたか。フィッシュ & チップスを表示するページは、通常、一度エスケープされたテキストを再度受け取ります。 2 番目のパスでは、最初の参照の先頭のアンパサンドが & に変換されました。

HTML の二重エスケープを検証するには、ページ タイトルに & が表示される CMS エディター用に Fish という製品を構築します。ダブルエスケープ診断が具体的なライブページを生成する間、アンプチップを保存します。ダブルエスケープがどこでどのように消費されるかを特定します。レビューをすり抜けたという指摘は、HTML テキストのみに属します。

両方ともエスケープする 2 つのレイヤー — テンプレートの自動エスケープと手動エスケープ、または保存時にエスケープしてレンダリング時に再びエスケープする

両方ともエスケープする 2 つのレイヤー — テンプレートの自動エスケープと手動エスケープ、または保存時にエスケープし、レンダリング時に再度エスケープします。多くの場合、2 つの境界が責任を共有します。ストレージにはプレゼンテーションの準備ができたテキストが含まれており、テンプレートはそれを再び自動エスケープします。別のパスは、すでに安全なレンダリング API の直前に手動でエスケープします。

ページ タイトルに & が表示される CMS エディターは、二重エスケープ診断に合格する前にエスケープ テンプレートの自動エスケープを記録することで、両方の 2 つのレイヤーをテストできます。手動エスケープまたはその後を比較し、保存時のエスケープを担当するパーサーを見つけます。この HTML の二重エスケープの結果は、実行可能コンテキストではなくレンダリングに関するものです。

署名を読んでいます — < 'と友達、そしてなぜ先頭の「&」がテルなのか

署名を読んでいます — < 'そして、なぜ先頭の & がテルなのか。 <、" などの署名および '参照に似ているテキストの直前にエンコードされたアンパサンドを明らかにします。これらは、新しいエンティティ タイプではなく、レイヤーを示します。

短いダブルエスケープ診断サンプルでシグネチャアンプの読み取りを分離します。 lt amp 39 を表示し、リテラル ソースとして、友人をフォローし、その目的地に到達する理由を示し、API を読み取る先頭の amp に名前を付けます。 HTML の二重エスケープの場合、Tell はパーサーにバインドされた証拠を残します。

実用的な例: 二重にエスケープされた文字列を一度に 1 パスずつデコードする - 各パスで何が明らかになり、いつ停止するか

実用的な例: 二重にエスケープされた文字列を一度に 1 パスずつデコードします。各パスで何が明らかになり、いつ停止するか。 ToolAcre は 1 パスのみをデコードします。 <;最初のクリック後はリテラルテキスト < になります。 2 番目の明示的なパスは < になります。各中間値は診断のために表示されたままになります。

a をデコードする実際の例を境界実験として扱います。ページ タイトルに & が表示される CMS エディターは、二重エスケープ文字列 1 を保持し、二重エスケープ診断操作を 1 回実行し、各パスで明らかにされる内容を変更する前に、一度に 1 文字ずつパスを検査する必要があります。いつ停止するかについての主張は、この HTML レイヤーで停止します。

パイプラインの修正 — 出力時に 1 回だけエスケープし、生のテキストを保存する

パイプラインを修正します — 出力時に 1 回だけエスケープし、生のテキストを保存します。永続的な修復は、セマンティック テキストを保存し、最終的な HTML 出力境界でエンコードすることです。事前にエスケープされた値を信頼できるものとしてマークすると、曖昧さが解消されるだけであり、後で生のマークアップが公開される可能性があります。

顧客マテリアルの代わりに無害な入力を使用してパイプライン エスケープの修正を再現します。出力時に正確に 1 回記録し、時間を観察して保存し、意図的な二重エスケープ診断パスをすべてカウントします。この HTML 二重エスケープ トレイルにより、CMS エディターはページ タイトルに含まれる生のテキストと二重エスケープの診断証拠を推測することなく評価できるようになります。

よくある間違い — 何も変わらないまでデコードし、エンティティに関する正当なテキストが破損する

よくある間違い - 何も変わらないまでデコードするため、エンティティに関する正当なテキストが破損します。値の変化が止まるまでデコードを繰り返すと、エンティティに関する正当な記述が破損し、テキストとして意図されたマークアップが明らかになる可能性があります。オープンエンド ループを使用する代わりに、アーキテクチャ レイヤーをカウントします。

ダブルエスケープ診断レビュー中に、よくある間違いをデコードして何も変化せず、破損するまで配置し、エンティティに関する正当なテキストを並べて配置します。 CMS 編集者は、ページ タイトルに & が表示されると、二重エスケープの診断証拠が変換時または下流で変更されたかどうかを判断できます。二重エスケープの診断証拠に関する HTML 二重エスケープの結論は、一般的なセキュリティ主張から外してください。

これでカバーされないもの — ユーザーからのリッチ HTML のサニタイズ(別の分野)

これでカバーされないこと — ユーザーからのリッチ HTML のサニタイズは、別の分野です。重複するエスケープを削除することは、リッチ HTML サニタイズではありません。ユーザーがマークアップを作成できる場合は、ホワイトリストのサニタイザと制限されたレンダリング サーフェスによって別の問題が解決されます。

ダブルエスケープ診断を実行する前に、これが何をしないかを定義してください。カバーのサニタイジングリッチ HTML をコントロールとして保存し、ユーザーから背後にあるコード ポイントを検査し、別の分野を次のインタープリターにマッピングします。これにより、CMS エディターが HTML の二重エスケープを調査しているページ タイトルを確認して、二重エスケープの診断証拠を監査できるようになります。

要点: エッジで一度エスケープする — HTML エンティティ エスケープ機能を使用して一度に 1 つのパスをデコードし、それぞれの中間結果を確認する方法

要点: エッジで 1 回エスケープする — HTML エンティティ エスケープ機能を使用して、一度に 1 つのパスをデコードし、それぞれの中間結果を確認する方法。ツールのワンパス動作は有益な証拠です。 & になると、別のデコードが既知の層に属するかどうかを判断します。 「クリーンになるまでデコード」を自動化しないでください。

テイクアウェイ エスケープを監視可能なダブル エスケープ診断出力に 1 回接続します。 1 パスの結果の横にあるエッジを維持し、HTML エンティティ エスケープが 1 パスのデコードに入る場所を確認します。ページタイトルに「&」が表示される CMS エディタは、狭い HTML ダブルエスケープ結果として一度にレビューできるようになりました。この記事の背後にある実際的な決定は具体的です。ページ上では、テキストが 2 回エスケープされたことを意味します (通常は 1 回はテンプレートによって、もう 1 回は手動で)。この投稿では、関係するレイヤー、ソース内のパターンを特定する方法、安全なデコード パスの数について説明します。リーダーのアクションも同様に具体的です。HTML エンティティ エスケープにリンクし、&amp; エンティティ エスケープのデコードを示します。サンプルを 2 回実行し、中間テキストと最終テキストを表示します。