どのようにすることができますでJavascriptの実行を利用サイド、サンドボックス?

StackOverflow https://stackoverflow.com/questions/93911

質問

一部のjavaアプリケーションのニーズに走javascriptで記述により非開発者向けです。これらの非開発者は、javascriptを使用のためのデータを設定します。(簡単なロジックと文字列の連結).

私の質問は、どのようにIセットアップの実行にこれらのスクリプトを確認すスクリプティング誤差のない大きなマイナスの影響のものを用いることとする。

  • 必要性を無限ループ
  • 防産卵新しいスレッド)。
  • 制限サービスへのアクセス-環境
    • ファイルシステム(例:場合disgruntledスクリプトの作家たファイルの削除)
    • データベースも削除データベース内のレコード)

基本的にはい環境で使用すると、javascriptの対象範囲のみを正確に何を必要とする。

役に立ちましたか?

解決

防無限ループにおいて置く必要があり、別のプロセスできるように殺害されました。

防をスレッドかの拡張が必要になるSecurityManager(デフォルトの実装できる信頼できないコードにアクセスにroot以外のスレッドグループ)

Javaセキュリティはできるの防止へのアクセスファイルシステム。

データベースに制限されることもありますので、使用できる標準のSQLユーザーの安全保障おりますが、これは非常に弱い。その他、必要なものを提供するAPIを制御す。

編集:ここのバージョンのサイズの提供にはjdk6たセキュリティー工事を行い、なかなかできないので、コンパイラです。

他のヒント

防無限ループの動きを観察することができ命令としてカウントのスクリプトを走る(この作品のみ解釈されるスクリプトではなく集計。

っているものもあり、これ 例のサイJavaDocs を防止するスクリプトから走り秒

 protected void observeInstructionCount(Context cx, int instructionCount)
 {
     MyContext mcx = (MyContext)cx;
     long currentTime = System.currentTimeMillis();
     if (currentTime - mcx.startTime > 10*1000) {
         // More then 10 seconds from Context creation time:
         // it is time to stop the script.
         // Throw Error instance to ensure that script will never
         // get control back through catch or finally.
         throw new Error();
     }
 }

ブロックのJavaクラスとメソッドのアクセスしてい...

http://codeutopia.net/blog/2009/01/02/sandboxing-rhino-in-java/

ったこのブログに役立つと思われるためsandboxingは何もなうサイズ):

http://calumleslie.blogspot.com/2008/06/simple-jvm-sandboxing.html

また純粋なJavaScriptの機能のみ、こちらのシングソリューション基づくJDK組み込みサイズの図書館な輸入の他3-当事者図書館:

  1. 見JavaScriptスクリプトエンジンファクトリクラス名ScriptEngineManager#getEngineFactories
  2. 負荷スクリプトエンジンファクトリクラスを新しいクラスローダは、JavaMembersまたはその他に関連したクラスは無視されます。
  3. コ#getScriptEngine読み込みスクリプトエンジン工場、<エバール>スクリプトに返されたスクリプトエンジンです。

が変更されていない場合はスクリプトを含むJavaスクリプトのクラスローダへの負荷JavaMembersまたはその他のクラスおよびトリガークラス見つかりませんで例外をスローしました。このように、悪意あるスクリプトは無視されずに実行します。

お読みくださいConfigJSParser.java やConfigJSClassLoader.java ファイルの詳細:

https://github.com/webuzz/simpleconfig/tree/master/src/im/webuzz/config

当サイトでは、以下のブラウザの単一のネジ切りないのでアクセスのファイルシステムでないという思いを大切にしていても安心です。私のプレの設定顔は丸いうタイムアウトの設定を無限ループでは常に産卵(Java)のスレッドを実行するためのスクリプト、そして死んでしまうようスレッドの後で時間くらい。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top