- PR -

RSA署名付アプレットのPermissionについて

1
投稿者投稿内容
くれっつ
会議室デビュー日: 2003/01/17
投稿数: 3
投稿日時: 2003-10-20 17:27
JRE1.4での動作を前提にしたアプレットにて,
ローカルファイルへのアクセスを行うことを考えています.
java.policyを編集させたくなかったので,
アプレットにRSA署名をすることによってAllPermissionを与え,
アクセス可能にすることを考えていました.

このアプレットでは,以下の二つの箇所でファイルアクセスを行っています.
(1) Applet.init() でのアプレット初期化時
(2) Applet.myMethod() の自作メソッド内
→ これはJavaScript内にて,document.myApplet.myMethod()
のようにして呼び出しています.

いくつかのクライアントで試してみたところ,
(1)の箇所はすべて問題なくアクセス可能なのですが,
(2)の箇所でAccessControlExceptionが発生する場合がありました.
いずれの環境も,IE6.0 SP1,JRE1.4.2なのですが,
(2)でエラーが発生するのはOSがWin2000の場合だけでした.

また,AccessControlContextオブジェクトを(1)(2)のそれぞれでダンプしてみたところ,
Win2000以外の場合は(1)(2)いずれも同じインスタンス,
Win2000の場合は(1)と(2)とで異なるインスタンスであることがわかりました.

Win2000であることが原因であるという根拠は全くなく,
いまいち原因をつかみかねているとこrです.
このような現象について,お心あたりのある方はいらっしゃいましたら,
お知恵をお借りできればと思っています.

よろしくお願い致します.
えのうえ
会議室デビュー日: 2004/01/01
投稿数: 2
投稿日時: 2004-01-01 08:49
遅レスで申し訳ありません。えのうえです。
私も同じようなことがあったので、とりあえず私の事象を説明いたします。

事象:署名済みのアプレットを使用したのにAccessControlExceptionが発生
環境:Win2k IE6SP1 JRE1.4.2_01以降(1.4.2では起きない)
原因:Javascriptからアプレットの関数を呼び出す部分
対処:アプレットからJavascriptを呼び出すようにコードを変更

上記のような感じでした。原因については、1.4.2→1.4.2_01のバージョンアップで
「未署名のスクリプトから署名済みアプレット関数の呼び出し」がセキュリティ
制限に引っかかるように(サンドボックス適用範囲に)なったためのようです。
ただし、この情報はSunの公式ページから発見したものではありません。飽くまでも、
私が検証した結果としてこういう動きをしているというだけです。

対処法としては、私が行ったようにアプレットからJavascriptを呼び出すように
変更するか、それが不可ならばJavascriptにも署名することで解決するはずです。
(Javascriptの署名方法については私は存じ上げません。申し訳ないです)

くれっつさんのところで起きた問題が私と同じ原因かどうかはわかりませんが、
とりあえずJRE1.4.2で動かしてみて動くようであれば同じ原因である可能性が
高いと思います。

以上、お役に立てれば幸いです。
1

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