F5 GLOSSARY

エスケープ処理

エスケープ処理とは、マークアップ言語やプログラミング言語、スクリプト言語等で文字列を扱う際に、その言語にとって特別な意味を持つ文字や記号を、別の文字列に置き換えることです。

例えばHTMLでは、タグの記述に「<」「>」という記号(文字)を使用します。これらの記号をHTMLの中で使うと、Webブラウザはこれらを「タグ記述の記号」とみなすため、文字として表示することができません。そこで「<」を表示する場合には「&lt;」、「>」を表示する場合には「&gt;」という文字列を、HTMLの中に記述します。Webブラウザはこれらのエスケープ文字列を、表示の際に「<」「>」に置き換えて表示します。この処理をエスケープ処理とよびます。

エスケープ処理は、Webページのフォームにユーザが入力した文字列を安全に扱うための「サニタイズ」において、重要な役割を果たします。

例えばユーザがフォームに入力した文字列を、確認のために次のページで表示するというWebアプリケーションを考えてみましょう。もしユーザが「<script>alert("Hello!");</script>」と入力し、Webアプリケーションがこの文字列をそのまま次に表示されるページに組み込んでしまうと、組み込まれた文字列はWebブラウザにスクリプト記述であるとみなされ、「Hello!」というアラートが表示されてしまいます。この程度のスクリプトでは大きな実害はないかもしれませんが、Webの作成者や運用者が意図しないことが発生してしまうのは重大な問題です。このように、第三者がWebページにスクリプトを自由に組み込めるのであれば、クロスサイト スクリプティング攻撃等の標的になる危険性があります。

これを回避するには、文字列を受け取ったWebアプリケーション側で「<」と「>」を「&lt;」と「&gt;」にエスケープし、「&lt;script&gt;alert("Hello!");&lt;/script&gt;」という形で次のページに組込みます。これでWebブラウザには、単なる文字列として扱われるようになります。その結果次のページでは、アラートが表示されることなく「<script>alert("Hello!");</script>」という文字列が表示されます。

エスケープ処理を行う関数は、Webアプリケーション構築用の多くの言語に装備されています。しかし全てのWebアプリケーションで適切なエスケープ処理が行われているかを確認し、問題があるWebアプリケーションを改修するのは、決して簡単ではあなく、大きな時間と労力が必要になります。この問題を解決する上で効果的なのが、Webアプリケーション ファイアウォール(WAF)の活用です。これによって、ユーザの入力文字列がWebアプリケーションに渡される前に、WAFでエスケープ処理できるようになります。

F5ではWAF機能を実装した製品として「F5 BIG-IP」を提供しています。


< Return to the glossary