ホーム > アプリケーション・セキュリティの管理 > クロスサイト・スクリプティング保護について > HTMLリージョンなどの静的領域の保護
HTMLリージョンなどの静的領域の保護 |
![]() 前へ |
![]() 次へ |
HTMLリージョンなどの静的表示領域では、&ITEM.
表記法を使用してセッション・ステートを参照できます。静的表示領域の例には、HTMLリージョン、ページのヘッダーとフッター、リージョンのヘッダーとフッター、リージョン・タイトル、ボタン・ラベル、ヘルプ・テキスト、フォーム・アイテム・ラベルおよび要素の後のテキスト、テンプレート、(フィールド・テキストの前後の)ラジオ・グループ、イベント成功メッセージ、イベント・エラー・メッセージ、ナビゲーション・バー属性、アプリケーション静的置換文字列値、チャート・ラベルおよび凡例、ブレッドクラムおよびリスト・フレーム・テキスト、カレンダ・テキスト、ラベル、凡例などがあります。
セッション・ステートがこのように参照される場合、ページに表示される値には、参照されるアイテムに次の安全なアイテム表示タイプのいずれかが含まれている場合にエスケープされる特殊文字(<
、>
、&
、"
)が含まれます。
テキストとして表示(状態は保存しない)
テキストとして表示(特殊文字をエスケープし、状態は保存しない)
テキストとして表示(LOVに基づき、状態は保存しない)
テキストとして表示(PL/SQLに基づき、状態は保存しない)
テキスト・フィールド(無効、状態を保存しない)
HTML表の停止および開始(ラベルのみ表示)
参照されるアイテムに前述のタイプ以外の表示タイプが含まれている場合、ページに表示される値には、エスケープされる特殊文字は含まれません。また、アプリケーション・レベルのアイテムには、安全な表示タイプが含まれているとみなされますが、実際にフォーム・アイテムに含まれているような表示プロパティは含まれていません。
Application Expressエンジンは、事前定義済のスマート・エスケープ・ルールを使用して、セッション・ステートからフェッチされた値をエスケープするかどうか、およびいつそれを実行するかを決定します。
このルールを使用するのは、前にリストした表示タイプを使用したアイテムは、通常フィルタ処理(エスケープ)されずにブラウザに表示されることを意図したHTMLを含むテキスト用であるためです。安全に行われる方法は、これらのタイプのアイテムが常にエスケープされてアプリケーションに入力されるルールを実施する以外にありません。たとえば、ユーザーが、Oracle Application Expressのf?p URL構文を使用して、一部のテキストを安全なアイテムに渡す場合、Application Expressエンジンは値をセッション・ステートに保存する際に特殊文字をエスケープします。これにより次の2つの結果が予想されます。
値に特殊文字が含まれていなかった場合、渡された値は指定されたとおりにセッション・ステートに保存される。
値に特殊文字が含まれていた場合、値をセッション・ステートに保存する際に特殊文字をエスケープする。
いずれの状況でも、アイテムは、現在、前述のHTMLリージョンなどの静的領域で&ITEM.
表記法を使用して安全に参照できます。
前にリストした安全なアイテム・タイプを使用して、ブラウザにHTMLマークアップを保持および表示します。たとえば、安全なページ・アイテムP1_XXX
(&P1_XXX
を使用)を参照して、太字で一部のテキストをレンダリングする要件があるとします。アイテムP1_XXX
には次のHTMLが含まれているとします。
<b>ABABABAB</b>
実行するには、アプリケーション・コントロール(計算、プロセス、アイテムのソース式、アイテムのデフォルト値など)を使用して、値をこれらの安全なアイテムに格納します。値をこのように挿入する場合は、コンテンツの安全性を確認します。これらの方法を使用する場合、Application Expressエンジンは、値をセッション・ステートに保存する際に特殊文字をエスケープしません。
安全なアイテムの安全性は、最終的に、アイテムがページにポストされず、ページ送信の一部としてApplication Expressエンジンに発行されないルールによって確認されます。