0

いくつかの特権で実行する必要があるアプレットがあります。つまり、ロード時に警告メッセージが表示されます。ユーザーが警告メッセージを拒否した場合は、エラーページにリダイレクトして、何が起こったのかを説明したいと思います。これを行う方法はありますか?

タイマーを実行して一定時間後にリダイレクトすることを検討しましたが、それはそれほど正確ではなく、代わりにポップアップからの応答をキャッチするとよいでしょう。

ユーザーが警告を拒否すると、次の例外がスローされます。

java.lang.SecurityException: attempted to open sandboxed jar [jar-file] 
    as a Trusted-Library

例外は、init関数に到達する前にスローされます。

4

1 に答える 1

1

タイマーを実行して、一定時間後にリダイレクトすることを検討しました。

..タイマーをキャンセルするJS関数を追加し、アプレットからそのJSを呼び出すように拡張すると、取得できる最善の保護になります。

セキュリティ関連の問題の試行/キャッチは、セキュリティプロンプトが拒否された場合にサンドボックス化されたアプレットをロードする一部のJREで機能しますが、セキュリティプロンプトが拒否された場合、他のランタイム(特にIced Tea JRE)はアプレットをまったくロードしません。拒否した。

いくつかの特権で実行するために必要なアプレットがあります。基本的に、そこにファイルを保存します。ファイルは任意のファイルにすることができるため、サイズは任意の値にすることができます。ユーザーはこのファイルを自分で選択し、1kbのテキストファイルから数ギガバイトの映画まで何でも選択できます。..

ユーザーが「次世代」-プラグイン2JRE(アプレット情報ページに記載)を使用できることが保証されている場合は、組み込みアプレットでJNLPAPIを使用できます。JNLPサービスは、サンドボックス化されたアプリのローカルディスクへのアクセスを提供します。JNLPファイルサービスのこのデモを参照してください。

しかし、わずかな問題があります。ユーザーが選択したファイルへのパスを保持するオプションはありません。このセキュリティの低い環境では、JREはJNLP APIオブジェクトを提供しませんFileが、代わりに提供します。FileContentsパスを提供せず、シリアル化できません。ただし、ユーザーが実行ごとにファイルを選択する意思がある場合は、実行可能である可能性があります。


..そしてそれは私に思い出させます。おそらく、信頼できるアプリを起動するためのより良い代替手段です。Java Web Startを使用してフリーフローティング(アプレットまたは)フレームを提供することです。ユーザーが拒否した場合、画面に表示されることはありませんが、いつでも起動ボタンをもう一度クリックできます(再度プロンプトが表示されます)。

于 2012-04-02T15:11:13.703 に答える