F5 用語集

エスケープ処理

「エスケープ」とは、マークアップ言語、プログラミング言語、またはスクリプト言語において、特別な意味を持つ文字や記号を安全に処理できる代替文字列に変換するプロセスを指します。

たとえば、HTML では、文字 < と > はタグを説明するために予約されています。 これらの文字が HTML 内に直接表示された場合、Web ブラウザはそれをプレーンテキストではなくマークアップとして解釈します。 したがって、これらの記号をプレーンテキストとして表示するには、< の代わりに <、> の代わりに > のようにエスケープ シーケンスとして記述する必要があります。 ブラウザはこれらのエスケープ シーケンスに遭遇すると、それを元の文字 (< および >) として視覚的にレンダリングします。 この変換プロセスを「エスケープ」と呼びます。

エスケープは、Webセキュリティの観点からは特に重要です。 これは、Web フォームを通じて提供されるユーザー入力を安全に処理することを目的とした実践である「サニタイズ」の重要な側面です。

たとえば、フォームからユーザー入力を受け取り、それを後続のページに直接表示する Webapplicationを想像してください。 ユーザーが次のような入力を送信したとします。
<script>alert("こんにちは!");</script>
Webapplicationがこの文字列をエスケープせずに結果ページに直接含めると、ブラウザはそれを JavaScript コードとして解釈して実行します。 その結果、「Hello!」と表示されるポップアップ警告ボックスが表示されましたが、これは Web サイトの作成者または管理者の意図したものではありません。 この単純なスクリプトは重大な損害を引き起こすことはないかもしれませんが、サードパーティのユーザーが Web ページにスクリプトを任意に埋め込むことができることは深刻な問題であり、サイトをクロスサイト スクリプティング (XSS) 攻撃やその他のセキュリティ上の脅威にさらす可能性があります。

これを防ぐには、Webapplicationでそのようなデータを表示する前に、特殊文字を正しくエスケープする必要があります。 < と > を対応するエスケープ シーケンス (< と >) に置き換えると、悪意のあるスクリプトは次の文字列として無害にレンダリングされます。
<script>alert("こんにちは!");</script>
この形式では、ブラウザはそれを厳密にテキストとして扱うため、スクリプトは無効化され、意図しない動作を引き起こすことなく、意図したとおりに表示されます。

ほとんどの最新の Webapplication開発言語とフレームワークには、文字列を適切にエスケープするための組み込み関数があります。 ただし、複雑な Webapplicationsですべての入力が正しくエスケープされていることを確認し、問題のある要素を特定して修正するには、かなりの時間と労力が必要になる場合があります。 この問題に対する非常に効果的な解決策は、Webapplicationファイアウォール (WAF) を使用することです。WAF は、ユーザーが送信した入力が Webapplicationに到達する前にエスケープされることを保証します。

F5 は、F5 BIG-IPソリューションで WAF 機能を提供します。