XPLATFORMはサンドボックスの概念に基づいてセキュリティポリシーを支援しています。
セキュリティとは、クラッカーによって行う個人のPCリソース(フォルダ/ファイル)をPCの所有者の同意なしに情報を盗用、破壊する行為から保護することを意味します。この章では、XPLATFORMで提供されるサンドボックス関連するセキュリティポリシーとその適用方法に関する内容です。
下記の内容は、この章では使用される用語です。
サンドボックス
保護された領域内でプログラムを動作させることで、外的な要因によって悪影響が及ぶのを防止するセキュリティモデル。 『子供を砂場 (サンドボックス)の外で遊ばせないこと』という言葉が語源と言われている。 このモデルでは、外部から受け取ったプログラムを保護された領域、すなわち、『箱』の中に閉じ込んだから動作させる。『箱』は、他のファイルやプロセスからは分離され、内部から外部を操作することは禁止されている。
個人フォルダ
OS Login Userのための個人用フォルダとして、
MS Windowsの場合は、「マイドキュメント」を、
Linuxの場合、ユーザーのホームディレクトリを意味します。
ドメイン
例えば、www.tobesoft.com/xplatform/a.xml URLの場合
ドメインは www.tobesoft.comの部分を指します。
Domain指定URL
www.tobesoft.com/xplatform/a.xml の形式のドメインを利用したURLを意味します。
IP指定URL
127.0.0.1/xplatform/a.xml の形式のIPアドレスを利用したURLを意味します。
D Class
Domain指定URLの場合例えば www.tobesoft.com の場合「*.tobesoft.com」に対応するドメインを意味します。
IP指定URLの場合例えば 「127.0..0.1」の場合、「127.0.0.*」に対応するIPを意味します。
セキュリティポリシー
セキュリティに関するすべての権限は、ユーザー(PCの所有者)に帰属されます。そのため、セキュリティの適用対象に該当する個人のPCのリソース(フォルダ/ファイル)のアクセス時にXPLATFORMが、"ユーザーの確認"ウィンドウを立ち上げて、ユーザーの許可を求めることを原則とします。「ユーザーの確認」ウィンドウは、安全でないファイルにアクセスすることをユーザーに通知します。さらに、そのフォルダ内のファイル及びサブフォルダ内のファイルに対してアクセスを許可するかどうかを選択することができるようにするウィンドウです。
セキュリティの適用対象
個人PCの個人フォルダを除いたフォルダ(例:C:\)及びファイル
(個人フォルダはセキュリティと関係なく("ユーザーの確認"ウィンドウが表示
されない)プロジェクトで自由にアクセスすることができます。)
ソケット通信の処理時のURL
エンジンアップデート関連URL(ADLのEngine url, TypeDefinitionのupdate url )
(但し, 個人PCのリソースアクセスと関係ないサービスURL, フォームURLなどの一般的なフォルダやURLはユーザーが確認することができるのでセキュリティ適用対象から除外されます。)
セキュリティの管理方法
プロジェクト管理者はXPLATFORMで提供するサンドボックスオプション (セキュリティレベル関連機能)を設定してセキュリティを管理します。
但し、サンドボックスオプションを変更してもプロジェクトの開発には影響を受けないようにすることを 原則とします。
セキュリティレベルの設定権限
セキュリティレベルの設定の権限はプロジェクトマネージャにのみ与えられます。
したがって、プロジェクトマネージャのみセキュリティレベルを設定することができ、開発者が任意にセキュリティレベルを調整できないようにしてください。
セキュリティレベルの設定単位
セキュリティレベルの設定単位はADLです。 つまり、ADLのみセキュリティレベルを設定することができます。
セキュリティレベルの種類及び役割
XPLATFORMでは「Private」、「All」の二種類のセキュリティレベルを提供します。
Private
限られたリソースのみをアクセスすることができます。
個人フォルダ以外のフォルダはアクセスすること自体が不可であります。
URLはADL URLのD Classに対応するURLのみアクセスすることができます。
All
すべてのリソースにアクセスすることができます。
但し、XPLATFORMが「ユーザー確認」ウィンドウを立ち上げてユーザーが確認した後、すべてのリソースにアクセスすることができます。
上記の内容を整理すると、以下の通りです。
セキュリティレベル | セキュリティ適用対象 | ユーザー確認 ウィンドウ | アクセス | |
---|---|---|---|---|
Private | フォルダ | 個人フォルダ | X | 可能 |
以外のフォルダ | X | 不可 | ||
URL | D Class URL | X | 可能 | |
以外のフォルダ | X | 不可 | ||
All | フォルダ | 個人フォルダ | X | 可能 |
以外のフォルダ | O | 可能 | ||
URL | D Class URL | X | 可能 | |
以外のフォルダ | O | 可能 |
XPLATFORM HTML5バージョンとの互換性を維持するためのセキュリティ機能に関連するパスの指定方法は、ウェブの処理方法と同じであることを原則とします。
セキュリティポリシー詳細
プロジェクトマネージャがADLのfilesecurelevelまたはnetworksecureleveltプロパティを「private」または「all"に設定します。(デフォルト値は「private」です。)
但し, アプリケーションオブジェクトはプロパティを提供しますが、開発者がScriptで任意に変更することができないようにReadOnlyとして提供します。つまり、ADLが ロードされる時、プロパティに値が設定されると、プログラムが実行される間には、この値を変更することができません。
「private」の場合、セキュリティ適用対象フォルダやURLにアクセスすると「ユーザー確認」ウィンドウも表示されず、アクセス自体が不可になります。「all」の場合、セキュリティ適用対象に対応するフォルダやURLにアクセスするとXPLATFORMが「ユーザー確認」ウィンドウを表示させ、ユーザーのアクセス許可を取得すると、その場合に限り、アクセスすることができます。
「ユーザー確認」ウィンドウが表示される前に、画面処理(例:Blurなど)作業をすることができるようにADLからonBeforeUserConfirmイベントを提供します。
「errordefine.xml」の内容を変更して「ユーザー確認"ウィンドウに表示されるメッセーの内容を修正することもできます。
URLでの「/」がXMLのパスを指示する場合は、ドメインがrootであるため、ウェブブラウザの機能と同じドメインのパスを意味します。
PCでの「/」はWindow systemフォルダが存在するドライブのrootを意味します。(Linuxの場合、「/」はrootを意味します。)
「./」は現在パスを意味します。但し、PCのパス(VirtualFileコンポーネントを使用する場合など)上での「./」は"個人フォルダ"です。
上記に記載されていない事項は、ウェブのポリシーを遵守することを原則とします。
セキュリティの適用方法
XPLATFORMから個人のPCのリソースを盗用、破壊する具体的なケースは、FileDialog,VirtualFileコンポーネントを利用して個人のPCのリソースに直接アクセスするか、またはTCPClientSocketコンポーネントを利用して、個人のPCのリソースを 盗用する場合です。
FileDialogコンポーネント利用時
FileDialogは、ユーザーによってフォルダやファイルが選択され、開発者の任意に変更することができないので、セキュリティの危険性はありません。したがって、FileDialogを使用すると、セキュリティレベルに関係なく、すべてのフォルダ/ファイルにアクセスすることができます。
VirtualFileコンポーネント利用時
プロジェクトマネージャがADLのfilesecurelevelプロパティを「private」または「all」に設定します。(デフォルト値は「private」です。)
個人フォルダ以外のフォルダは、「private」の場合、アクセス自体が不可になります。「all」の場合、XPLATFORMが「ユーザー確認」ウィンドウを表示します。
但し、application.filesecurelevelは属性がReadOnlyのため、ADLがロードされた後にはこの値を変更することができません。
「ユーザー確認」ウィンドウに表示されるメッセージは、「errordefine.xml」で変更することができます。このウィンドウが表示される前に、画面の処理が必要な場合はADLのonBeforeUserConfirmイベントに処理する内容を入力してください。
TCPClientSocketコンポーネント利用時
プロジェクトマネージャがADLのnetworksecurelevelプロパティを「private」または「all」に設定します。(デフォルト値は「private」です。)
ADL URLのD Classに対応するURLは「private」の場合、アクセス自体が不可になります。「all」の場合、XPLATFORMが"ユーザー確認"ウィンドウを表示します。
但し, application.filesecurelevelは属性がReadOnlyであるため、ADLがロードされた後にはこの値を変更することができません。
「ユーザー確認」ウィンドウについて、メッセージ内容の変更及びウィンドウが表示される前の画面の処理はVritualFileコンポーネント利用時と同じです。
その他
XPLATFORMエンジンを他のプログラムに変えてインストールする場合を防ぐために、XPLATFORM updateに関連するURL、つまりengineurl、updateurlは、セキュリティのレベルに関係なく、ADLドメインと同じ場合にのみ許可されます。