- PR -

アプレットの初期化コード内ではポリシファイル不要?

1
投稿者投稿内容
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2008-04-23 11:52
JAppletから派生して作成された既存の署名付アプレットに、メソッドを追加してJavaScriptからコールするようにしました。
するとアプレットロード時に行われる、ローカルファイルへのアクセス(読み、書き、実行)は成功するのですが、JavaScriptからコールされるメソッドで同じファイルへアクセスすると、java.security.AccessControlExceptionが発生します。
現象としては「電子署名付きアプレットのIEでの動作について」
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16788&forum=12
と同じようです。

調べたところ、ポリシファイルを定義すれば回避できるようですが、アプレットロード時は成功するのが腑に落ちません。これはこういうものなのでしょうか?
なおjavaは1.3.1です。
#アプレットロード時はポリシファイル不要なんてバグちゃうの? という気もしますがそれはさたておき、ポリシファイルが必要となる理由を、ユーザに説明しなければなりません…
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2008-04-24 16:13
javaポリシに関しては、

http://sdc.sun.co.jp/java/docs/products/plugin/1.3/enhancements/ja/security.html

のLive Connectの項に説明がありました。
JavaScript が UniversalJavaPermissions 権限を持っていると、ローカルのポリシファイルは不要になるようです。
何のことか解らんので、これから調べます。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-04-24 17:07
UniversalJavaPermissions ってなんなんだろう。ぐぐっても全然検索にかからない…。
UniversalBrowserReadならちらほら引っかかるんですが。
署名付きJavaScriptに絡む権限の話題なのだろう、とは想像がつくのですけども。

JavaScriptからJavaをコールする条件は
引用:

JavaScript から Java への通信では、次の 2 つのうちどちらかの条件に当てはまる場合、JavaScript からアプレットへの呼び出しが許可されます。
1. ページの出所 (URL) が、アプレットの出所と同じである
2. JavaScript が署名付きで、アクセス権 UniversalBrowserRead が JavaScript に与えられている


http://sdc.sun.co.jp/java/docs/products/plugin/1.3/enhancements/ja/security.html
のようですね。

署名付きのAppletは権限を要求するようになっている場合、起動時に確認されるのではないでしょうか。
権限を得た後は、ローカルファイルなどへアクセスすることができます。
Javaが1.3ですか…。当時のJavaで権限確認がされたかは記憶にありません。
1.3って保証切れているような気もしますね。

UniversalJavaPermissions という特殊な権限がない限りはデフォルトのサンドボックスでの動作となる模様。
JavaScriptに署名があって全権限とるようになっていたら、Java側に無条件に全権限が与えられる?本当かな…。
JavaScriptを信頼したらどこに置いてあるAppletも自在に読めて、かつ全権限で動作するって?
1

スキルアップ/キャリアアップ(JOB@IT)