3.10.2 置換文字列での出力のエスケープの制御

置換文字列での出力のエスケープの制御について学習します。

ページ名、アプリケーション・アイテム名、レポート列、またはその他の置換文字列に、感嘆符(!)を前に付けた事前定義済フィルタ名を追加することによって、置換値の特殊文字をエスケープできます。出力のエスケープは、ブラウザでクロス・サイト・スクリプティング(XSS)攻撃を回避するための重要なセキュリティ手法です。Oracle APEXでは、HTMLまたはJavaScriptコンテキスト内の文字を自動的にエスケープするためにすでに最善を尽くしています。この拡張構文を使用して、開発者は出力を詳細に制御できます。

使用できるエスケープ・フィルタ

使用できるエスケープ・フィルタは次のとおりです。

  • HTMLは、次に示すように、予約されているHTML文字をエスケープします。
    • アイテム:

      &P1_DEPTNO!HTML.

    • 対話グリッド列:

      &ENAME!HTML.

    • 他のレポートの列:

      #ENAME!HTML#

    関連項目:

    『Oracle APEX APIリファレンス』APEX_ESCAPE
  • ATTRは、次に示すように、HTML属性コンテキスト内の予約文字をエスケープします。
    • 対話グリッド列:

      &ENAME!ATTR.

    • 他のレポートの列:

      #ENAME!ATTR#

    関連項目:

    『Oracle APEX APIリファレンス』HTML_ATTRIBUTEファンクション
  • JSは、次に示すように、JavaScriptコンテキスト内の予約文字をエスケープします。
    • アイテム:

      &P1_DEPTNO!JS.

    • 対話グリッド列:

      &ENAME!JS.

    • 他のレポートの列:

      #ENAME!JS#

    ノート:

    JSエスケープ・フィルタは、クライアントで実行される置換ではサポートされていません。

    関連項目:

    『Oracle APEX APIリファレンス』JS_LITERALファンクション
  • RAWは、次に示すように、元のアイテム値を保持し、文字をエスケープしません。
    • アイテム:

      &P1_DEPTNO!RAW.

    • 対話グリッド列:

      &ENAME!RAW.

    • 他のレポートの列:

      #ENAME!RAW#

  • STRIPHTMLは、次に示すように、HTMLタグを出力から削除し、予約されているHTML文字をエスケープします。

    • アイテム:

      &P1_DEPTNO!STRIPHTML.

    • 対話グリッド列:

      &ENAME!STRIPHTML.

    • 他のレポートの列:

      #ENAME!STRIPHTML#