---
title: "PhantomJSへのアクセスを制限する"
slug: "limit-access-to-phantomjs"
abstract: "PhantomJSへのアクセス制限方法と、Sitecore Coreの役割で生成されるスクリーンショットについて。"
---
# PhantomJSへのアクセスを制限する

**適用対象**

すべての [主要役割](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/roles-overview.html)

**Sitecoreインストールフレームワーク**

PhantomJSはContent Delivery、xDB Processing、xDB Reportingの役割でデフォルトで無効化されていません。

**Azure Toolkit**

PhantomJSはContent Delivery、xDB Processing、xDB Reportingの役割でデフォルトで無効化されていません。

PhantomJSはSitecoreに付属するサードパーティ製プログラムです。コンテンツテスト機能で、Content ManagementやEXM Dispatchロールのウェブページのスクリーンショット生成やサムネイル作成に使われています。プログラムを移動させたり、権限を制限したり、不要なロールで無効化したりすることで、PhantomJSのセキュリティを高めることができます。

## PhantomJSをwebrootフォルダの外に置く

PhantomJSは <webroot>\\$(dataFolder)\\tools\\phantomjs\\ フォルダ内にあります。 $(dataFolder) 変数はデフォルトで「 App\_Data」となり、PhantomJSは <webroot>\\App\_Data\\tools\\phantomjs\\ フォルダに入ります。これにより、セキュリティ設定が正しく設定されていない場合、外部の人がphantomjs.exeファイルにアクセスできる可能性がありますSitecore。

コンテンツテストのために、Sitecoreは<webroot>\\App\_Config\\Sitecore\\ContentTesting\\Sitecore.ContentTesting.configパッチファイルのContentTesting.PhantomJS.ExecutablePath設定を通じてPhantomJSを参照しています。

サムネイル生成に関して、Sitecoreは以下の設定でPhantomJSを参照しています:

-   PhantomJsExePath は phantomjs.exe ファイルを参照します。デフォルト値は <sitecore data folder>/tools/phantomjs/phantomjs.exeです。
-   PhantomJsRenderScriptPath は render.js ファイルを参照します。デフォルト値は <sitecore data folder>/tools/phantomjs/render.jsです。

> !注パッチファイルの作成についての詳細は、「 [Sitecore設定のカスタマイズにパッチファイルを使う](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/use-a-patch-file-to-customize-the-sitecore-configuration.html "Use a patch file to customize the Sitecore configuration")」をご覧ください。

PhantomJSフォルダを移動するには:

1.  <webroot>\\App\_Data\\tools\\phantomjs\\フォルダを例えばC:\\phantomjs1\\に移動します。もし望むなら、例えばコンテンツテスト用のphantomjs1とサムネイル用のphantomjs2という2つのphantomjsフォルダを定義することもできます。
    
2.  <webroot>\\App\_Config\\Include\\フォルダ内に、例えば「MovePhantomJSFolder.config」と名付けられたパッチファイルを作成します。
    
3.  以下の構成を挿入します:
    
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:security="http://www.sitecore.net/xmlconfig/security/">
     <sitecore>
     <settings>
     <setting name="ContentTesting.PhantomJS.ExecutablePath" value="C:\\phantomjs1\\phantomjs.exe" />
     <setting name="PhantomJsExePath" value="C:\\phantomjs2\\phantomjs.exe" />
     <setting name="PhantomJsRenderScriptPath" value="C:\\phantomjs2\\render.js" />
     </settings>
     </sitecore>
    </configuration>
    
4.  パッチファイルを保存してください。
    
5.  App\_Dataフォルダの内容を新しいデータフォルダ(例:D:\\SC\\Data)に移動させます。
    
    > !重要App\_DataフォルダーはデフォルトでSitecore.configファイルのdataFolder変数に定義されています。
    > 
    > PhantomJS.exeの新しい場所(例えばC:\\PhantomJs)を作成する場合は、<webroot>\\App\_Data\\tools\\phantomjsフォルダ内でデフォルトで見つかっているファイルだけを新しい場所に移動するようにしてください。
    

## PhantomJSの権限を制限する

PhantomJSはSitecore内で実行されるため、Sitecoreと同じ権限で動作します。Sitecoreはできるだけ権限を最小限に抑え、必要なファイルやフォルダのみにSitecoreアクセスを許可することを推奨します。

### PhantomJSフォルダとプログラムファイルへのアクセスを制限してください

Sitecoreアカウントは以下に制限することをお勧めします:

-   PhantomJSフォルダへの読み取りアクセス
-   PhantomJSプログラムファイルの実行権限

### スクリーンショットフォルダへのアクセスを制限してください

Sitecore PhantomJSにgetScreenShotForURLパイプライン内のRenderScriptsプロセッサによって生成されるスクリプトを渡します。スクリプトはPhantomJSに特定のフォルダとファイル名にスクリーンショットを書き込むよう指示します。フォルダはgetScreenShotForURLパイプラインで指定され、デフォルトは <webroot>\\temp\\screenshotsです。ファイル名はGenerateFilenameプロセッサによって生成されます。

Sitecoreアカウントの読み取り・書き込みアクセスはスクリーンショットフォルダに限定することをお勧めします。

### キャッシュフォルダへのアクセスを制限してください

PhantomJSはウェブリソースをディスク上にキャッシュするよう設定されており、キャッシュの位置はWindowsバージョンによって以下のいずれかになります。

-   C:\\Ofi Labs\\PhantomJS\\cache
-   C:\\Users\\<user>\\AppData\\Local\\Ofi Labs\\PhantomJS\\cache ここで <user> はSitecoreが運営されているアカウントです。

Sitecoreアカウントの読み書きアクセスはキャッシュフォルダに限定することをお勧めします。

あるいは、ディスクキャッシュを完全に無効にする方法は:

1.  \\App\_Config\\Sitecore\\ContentTesting\\Sitecore.ContentTesting.configファイルを開け。
2.  ContentTesting.PhantomJS.EnableDiskCache設定をfalseに変更してください。

> !注キャッシュを無効にするとスクリーンショット生成に時間がかかることに注意してください。なぜなら、毎回すべてのウェブリソースを取得しなければならないからです。

## PhantomJSを無効にする

PhantomJSはContent Delivery、xDB処理、xDBレポートの役割には不要で、起動するgetScreenShotForURLパイプラインにパッチを当ててプログラムフォルダを削除することで無効化できます。

getScreenShotForURLパイプラインは<webroot>\\App\_Config\\Sitecore\\ContentTesting\\Sitecore.ContentTesting.config設定ファイル内にあります。

getScreenShotForURLパイプラインを無効にし、PhantomJSフォルダを削除するには:

1.  <webroot>\\App\_Config\\Include\\フォルダに行ってください。
    
2.  例えば、DisableGetScreenShotForURLPipeline.config.
    
3.  以下の構成を挿入します:
    
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/">
     <sitecore role:require="ContentDelivery or Reporting or Processing">
     <pipelines>
     <getScreenShotForURL>
     <patch:delete />
     </getScreenShotForURL>
     </pipelines>
     </sitecore>
    </configuration>
    
4.  パッチファイルを保存してください。
    
5.  <webroot>\\$(dataFolder)\\tools\\フォルダに行ってください。
    
6.  phantomjs\\フォルダ(phantomjs.exe実行ファイルを含むフォルダを削除してください。