XPages セキュリティ

XPages アプリケーションにはセキュリティが用意されています。

Notes® クライアントで稼働する XPages アプリケーションには、 例えば、データベースへのアクセスや、組み込みの Java™ コードを持つ JavaScript へのアクセスなど、ユーザーのワークステーション上で実行できるコード (通常、「アクティブコンテンツ」と呼ばれる) が含まれた設計要素をいくつも組み込むことができます。 アクティブコンテンツが、例えばワークステーションファイルの読み書き、システムプロパティの読み書き、ネットワーク操作などの、保護された操作を実行するのを防ぐため、XPages では実行制御リスト (ECL) を使用して、保護された操作を実行しようとするコードの署名者に対してユーザーが付与したアクセス権限と機能を管理します。

ECL により、コードの署名者が特定のワークステーション上でのコード実行を許可されるかどうかが決定し、コードが各種ワークステーション機能に対して保有するアクセス権限 (例えば、現在のデータベースまたは他のデータベースへのアクセス権限など) が定義されます。 XPages アプリケーション内のアクティブコンテンツの例としては、JavaScript に組み込まれた Java コード (サーバーサイド)、サーバーサイドスクリプトのライブラリ、データベースにインポートされた Java クラスおよび JAR などがあります。

XPages アプリケーションのすべての設計要素には、その作成者の署名があります。 XPages アプリケーションの署名者が複数いる場合は、保護された操作を実行する前に、すべての署名者がユーザーによって信頼されなければなりません。

XPages アプリケーションの ECL セキュリティアクセスオプションは [ユーザーセキュリティ] ダイアログ ([ファイル] > [セキュリティ] > [ユーザーセキュリティ]) の [実行制御] の 下にある [ワークステーション] タブで設定します。

Active Content Filtering によるセキュリティ

Active Content Filtering (ACF) セキュリティ機能も、実行中に悪意のあるコードが XPage 入力コントロールに入力されないよう保護します。

Active Content Filtering は、入出力テキストコントロール内で悪意があると考えられるアクティブコンテンツ (スクリプト、タグ) を削除するために使用されます。 ACF エンジンは、実行時にフィルタリングを実行するためのライブラリとして機能します。 特定の XPage コントロール (編集ボックス、複数行入力域ボックス、リッチテキスト、非表示の入力) にフォーカスを移動すると、basics の下の [すべてのプロパティ] タブに、htmlFilterhtmlFilterIn の 2 つのプロパティが表示されます。

htmlFilter プロパティは、コントロールがクライアントにデータを送信するときに使用する ACF エンジンを定義し、 htmlFilterIn プロパティは、コントロールがクライアントからテキストを受信するときに使用するエンジンを定義します。 テキストフィールドに対して ACF が有効または無効になるようにこれら 2 つのプロパティを変更できます。

XPages では次の 4 つの ACF エンジンを使用できます。

「acf」エンジンは HTML テキストを解析し、構成ファイル (acf-config.xml) に基づいて、危険な構文を除去します。 「striptags」エンジンは、正規表現 'replaceAll("¥¥<.*?>","")' を使用して、すべてのタグを削除します。 "identity" フィルタは、オリジナルのストリングを返します。 「empty」エンジンは、すべてのものを削除して空ストリングを返します。

「acf」エンジンは、構成ファイルを介して構成できます。 クライアントサイドの場合、このファイルの場所は通常は C:¥Program Files¥IBM¥Lotus¥Notes¥Data¥properties です。 例えば、acf-config.xml.sample が このフォルダに入っています。

ACF を構成するには、最初に、同じフォルダ内で xsp.properties ファイルを見つけて、以下の行を追加します。 xsp.htmlfilter.acf.config=acf-config.xml これは、acf-config.xml を使用して「acf」エンジンを構成することを示します (この指定を行わないと、デフォルト規則が使用されます)。 acf-config.xml のファイル内容の例を以下に示します。
<?xml version="1.0"?>
<config>
       <filter-chain>
          <filter name='base' class='com.ibm.trl.acf.impl.html.basefilter.BaseFilter'
                  verbose-output='false' use-annotation='false' />
       </filter-chain>

			<filter-rule id='base'>
           <target scope=''>
             <!-- C14N 規則 -->
             <rule c14n='true' all='true' />

              <!-- 基本規則 -->
             <rule attribute='on' attribute-criterion='starts-with'
                 action='remove-attribute-value' />
             <rule attribute='${' attribute-criterion='starts-with'
                 action='remove-attribute-value' />
             <rule attribute='href' value='javascript:' value-criterion='contains'
                  action='remove-attribute-value' />
             <rule attribute='style' action='remove-attribute-value' />

              <rule tag='script' action='remove-tag' />
              <rule tag='style' action='remove-tag' />
              <rule tag='link' attribute='rel' value='stylesheet'
                   value-criterion='contains' action='remove-tag' />
            </target>
        </filter-rule>
</config>
上記の例について、以下に説明します。

実行制御リストの詳細については、Domino Administrator ヘルプを参照してください。