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

たとえばHTMLでは、文字<と>はタグの記述用に予約されています。これらの文字をHTML内に直接記述すると、Webブラウザはプレーンテキストではなくマークアップとして解釈します。そのため、これらの記号をプレーンテキストとして表示するには、<には&lt;、>には&gt;のようなエスケープシーケンスを使用して記述する必要があります。ブラウザはこれらのエスケープシーケンスを検出すると、元の文字(<と>)として画面に表示します。この変換処理を「エスケープ」と呼びます。

エスケープ処理は、Webセキュリティにおいて特に重要です。Webフォームから入力されたユーザー入力を安全に処理するための「サニタイズ」に欠かせない要素です。

たとえば、フォームからユーザー入力を受け取り、その内容を次のページに直接表示するWebアプリケーションを考えてみましょう。ユーザーが次の内容を入力したとします。


<script>alert("Hello!");</script>


Webアプリケーションがこの文字列をエスケープせずに生成後のページへ直接組み込むと、ブラウザーはこれをJavaScriptコードとして解釈し、実行します。その結果、Webサイトの作成者や管理者が意図していないにもかかわらず、「Hello!」と表示されたポップアップのアラートボックスが現れます。この単純なスクリプト自体は重大な被害をもたらさない可能性がありますが、第三者のユーザーがWebページに任意のスクリプトを埋め込めることは深刻な問題であり、サイトがクロスサイトスクリプティング(XSS)攻撃やその他のセキュリティ脅威にさらされるおそれがあります。

これを防ぐには、Webアプリケーションでこのようなデータを表示する前に、特殊文字を適切にエスケープする必要があります。<と>をそれぞれ対応するエスケープシーケンス(&lt;と&gt;)に置き換えることで、悪意のあるスクリプトは無害な文字列として次のように表示されます。


&lt;script&gt;alert("Hello!");&lt;/script&gt;


この形式では、ブラウザーは内容を厳密にテキストとして扱います。そのため、スクリプトは無効化され、意図しない動作を引き起こすことなく、そのまま表示されます。

最新のWebアプリケーション開発言語やフレームワークの多くには、文字列を適切にエスケープするための機能が組み込まれています。しかし、複雑なWebアプリケーションですべての入力が正しくエスケープされていることを検証し、問題のある要素を特定して修正するには、多大な時間と労力がかかる場合があります。この問題に対する非常に効果的な解決策は、Web Application Firewall(WAF)を使用し、ユーザーが送信した入力がWebアプリケーションに到達する前に確実にエスケープされるようにすることです。

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