Datacap Navigator でのコンテンツ・セキュリティー・ポリシー・ヘッダーの構成

DynamsoftServiceSetup.msi プログラムをスキャン、ダウンロード、実行するためには、Datacap Navigator でコンテンツ・セキュリティー・ポリシー・ヘッダーを構成する必要があります。これは一回限りの手続きです。

Datacap Navigator アプリケーション用のコンテンツ・セキュリティー・ポリシー・ヘッダーを構成するには、下記の手順を実行します。

手順

  1. WAS サーバーを停止します。
  2. ¥Program Files¥IBM¥WebSphere¥AppServer¥profiles¥>AppSrv01¥installedApps¥<FindYourNode>¥navigator.ear¥navigator.war¥WEB-INF フォルダーにナビゲートします。
  3. WEB-INF フォルダーにある Web.xml ファイルを開き、<param-value> タグ内の ESAPIWafPolicy.xml.default ファイルのパスを見つけます (セクション 1 を参照)。
  4. セクション 1 から得られたパスにある ESAPIWafPolicy.xml.default ファイルを編集します。
  5. ESAPIWafPolicy.xml.default ファイルの内容をセクション 2 に示す内容全体と置き換えます (セクション 2 を参照)。
  6. WAS サーバーを再始動します。
    重要: ESAPIWafPolicy.xml.defaultファイルと ESAPIWafPolicy.xml ファイルに変更を加える前に、これらのファイルを一時フォルダーにコピーしてください。

コンテンツ・セキュリティー・ポリシーが正しく構成されたことの確認

ブラウザー・コンソールのログを収集し、次の項目がログにないか確認します。

13:16:23.859 Content Security Policy: The page's settings blocked the loading of a resource at http://127.0.0.1:18622/f/VersionInfo?ts=1603192583826 ("default-src"). dynamsoft.webtwain.initiate.js:13:34379

これは、Windows サーバーに対して Datacap Navigator のコンテンツ・セキュリティー・ポリシーを有効にするためのセットアップが正しく実行されなかったことを意味します。もう一度手順に従って構成してください。

注: コンテンツ・セキュリティー・ポリシー構成について詳しくは、https://www.ibm.com/support/pages/node/6229174を参照してください。

1. WEB.xml ファイルを開いてローカル WAS サーバー上の ESAPIWafPolicy.xml.default ファイルのパスを見つける

<filter-name>ESAPIWebApplicationFirewallFilter</filter-name>
	<filter-class>com.ibm.ecm.filters.ESAPIWafFilter</filter-class>
		<init-param>
			<param-name>configuration</param-name>
			<param-value> C:\\Program Files\\IBM\\ECMClient\\config\\ESAPIWafPolicy.xml.default</param-value>
		</init-param>
		<init-param>
			<param-name>filterUploads</param-name>
			<param-value>false</param-value>
		</init-param>
	</filter>

2. ESAPIWafPolicy.xml.default ファイルの内容

</error-handling>
	</settings>

	<virtual-patches>
		<!-- Uncomment and update to add return host validation when enableOAuthProxy is set to true in web.xml
		<virtual-patch id="oauth2-return" path=".*/jaxrs/oauth2/.*"
			variable="request.parameters.state"
			pattern="^(localhost|localhost:http)$"
			message="Detected invalid OAuth2 return host.">
		</virtual-patch>
		-->
	</virtual-patches>

	<outbound-rules>
		<add-header name="Cache-Control" value="no-cache, no-store" path=".*/|.*\.jsp|.*/jaxrs/.*|.*/api/.*"/>
		
				<add-header name="Content-Security-Policy" 
					value="default-src 'self' blob: https:; 
					connect-src 'self' blob: https http://127.0.0.1:* ws://127.0.0.1:*; 
					font-src 'self' data: blob: https:; 
					img-src 'self' data: blob: https:; 
					script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; 
					worker-src 'self' blob: https:; 
					style-src 'self' 'unsafe-inline' https:; 
					frame-ancestors 'self'" 
					path="/.*"/>
					
		<!-- <add-header name="Content-Security-Policy"
					value="default-src 'self' blob: https:; font-src 'self' data: blob: https:; img-src 'self' data: blob: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; worker-src 'self' blob: https:; style-src 'self' 'unsafe-inline' https:; frame-ancestors 'self'"
					path="/.*"/> -->
		<add-header name="Referrer-Policy" value="same-origin" path="/.*"/>
		<add-header name="Strict-Transport-Security" value="max-age=7776000; includeSubdomains" path="/.*"/>
		<add-header name="X-Content-Type-Options" value="nosniff" path="/.*"/>
		<add-header name="X-Frame-Options" value="sameorigin" path="/.*"/>
		<add-header name="X-Permitted-Cross-Domain-Policies" value="none" path="/.*"/>
		<add-header name="X-XSS-Protection" value="1; mode=block" path="/.*"/>
	</outbound-rules>

	<url-rules>
		<!-- Deny HTTP methods other than GET, POST, PUT, DELETE, HEAD, and OPTIONS, and only allow POST for logon requests -->
		<restrict-method deny="^((?!GET|POST|PUT|DELETE|HEAD|OPTIONS).)*$"/>
		<restrict-method deny="^(GET|PUT|DELETE|HEAD|OPTIONS)$" path=".*/jaxrs(/|/.+/)logon$"/>
	</url-rules>
</policy>