2020年7月3日金曜日

特定のページへの直リンクによるアクセス(4) - 補足

いままでの記事で紹介しきれなかった機能を紹介しようと思います。

フォームのオートコンプリートとブラウザ・キャッシュ


セキュリティにまとまっているページのプロパティで紹介していないものとして、認可スキーム、フォームのオートコンプリートおよびブラウザ・キャッシュがあります。認可スキームはそれだけでひとつのテーマになる機能なので除くとして、フォームのオートコンプリートとブラウザ・キャッシュの指定によって何が変わるのか説明します。

フォームのオートコンプリート


このページで生成されるフォームにautocomplete="off"を追加します。以下のようなHTML生成されます。
<form action="wwv_flow.accept" method="post" name="wwv_flow" id="wwvFlowForm" data-oj-binding-provider="none" novalidate autocomplete="off">
日本語のオンライン・ヘルプにある「オン」の値はこのページには影響しません。というのは、オンの場合は生成されるHTMLに何も追加しない、という意味です。autocomplete="off"がどのような効果を持つかは、厳密にはブラウザに依存します。デフォルトはオフになっています。

ブラウザ・キャッシュ


有効無効の設定があり、無効にするとHTTPのレスポンス・ヘッダーに
Cache-Control: no-store
が挿入されます。クライアントのリクエストおよびサーバーのレスポンスを一切キャッシュしませんが、厳密にはブラウザ依存です。デフォルトはアプリケーション・デフォルトですが、これは通常、無効になっています。

アプリケーション・デフォルト


共有コンポーネントアプリケーション定義属性、または、アプリケーションを開いたページのアプリケーション・プロパティの編集から開くページのセキュリティの項目に、各種プロパティのデフォルト値が設定されています。


共有コンポーネントからはアプリケーション・ロジックに含まれるアプリケーション定義属性を開きます。


今回の設定に関係するのは、セッション管理、セッション・ステート保護、ブラウザ・セキュリティです。

セッション管理


セッションを再結合ディープ・リンクのアプリケーション・デフォルトが設定されています。


セッションの再結合については、インスタンス・レベルの設定があります。管理サービスにログインし、インスタンスの管理を実行します。


インスタンスの設定に含まれるセキュリティを開きます。


セキュリティセッションを再結合の設定が含まれます。デフォルトではパブリック・セッションに対して有効になっており、開発者がそれより緩い認証されたセッションを再結合を選んでも機能しないよう制限をしています。


ちなみにセッションの再結合の上に、チェックサム・ハッシュ関数の設定があります。デフォルトは最もセキュアになっています。


この設定によりデータベースに実装されているDBMS_CRYPTOパッケージで使用可能な暗号化ハッシュ・アルゴリズムの種類から、最もセキュアなアルゴリズムを選んでいます。使用可能なハッシュ・アルゴリズムはデータベースのバージョンで異なります。Oracle Database 11gではMD4, MD5, SHA-1が実装されている使用可能なアルゴリズムであるため、現在では強度が高いとはいえないSHA-1が選択されることになります。

セッション・ステート保護


アプリケーション・レベルのセッション・ステート保護が設定されています。デフォルトは有効です。無効にすると、ページ・アクセス保護、または、アイテムのセッション・ステート保護の設定がどのようになっていても、チェックサムによる保護が行われなくなります。一般的なアプリケーションで無効に設定することはないでしょう。


セッション・ステート保護の管理をクリックすると、共有コンポーネントセッション・ステート保護が呼び出されます。


セッション・ステート保護はアプリケーションのセキュリティを確保する上で重要な機能なので、一括でレポートや構成をすることができます。例えば、以下のような画面でセッション・ステート保護の設定を行うことができます。


ブラウザ・セキュリティ


ブラウザ・キャッシュのアプリケーション・デフォルトは、ブラウザ・セキュリティキャッシュとして設定されています。デフォルトは無効です。


キャッシュの設定の下に、フレームへの埋込みがあります。拒否同じ起点から許可許可の3つから選べます。これはX-Frame-Optionsヘッダーのdenysameoriginヘッダーの生成しない、に対応しています。

認証ファンクションの影響


ページ・プロパティのヘルプに認証スキームのページ監視ファンクションの実装によって、この属性の効果が決まります。との記載があります。


監視ファンクションとは、認証スキームに含まれる設定です。以前にこの機能について記事を書いています。

ユーザー定義の監視ファンクションを登録すると、その中でビューAPEX_APPLICATION_PAGESビューのPAGE_REQUIRES_AUTHENTICATION列を見て、認証をバイパスするといった処理を組み込まないと、この設定の効果は無くなる、ということをここでは説明しています。

監視ファンクションを自作するときには、気をつけてください。