5

私は、ユーザーが任意の JavaScript コードを実行できるようにする Node アプリを作成しています。これは、通常の UI を超えた「内部 API」/ビジネス フローのようなものです。

以下を提供するサンドボックス環境を探しています。

  • まったく新しいスレッドを生成せずに実行を分離する - これは何千人ものユーザーによって実行されます。 . 複数のサーバー間でスポーンする機能。

  • 解析/実行エラーで例外をスローする構文チェックと、アプリ全体のクラッシュ。

  • functions/var アクセスを無効にする機能。ノードの I/O へのアクセスを防止しようとしています...そのため、ユーザーはこれを DoS スクリプトに変換したり、/etc/passwd を読み取ったりすることはできませんが、ネイティブ構文と事前承認済み関数のリストを実行することはできます。

  • while(true) do_intensive_stuff();タイムアウト制御...などに実行上限を適用できます 。

明らかな選択肢が思い浮かびますか?

4

3 に答える 3

3

「ノード js サンドボックス」を Google で検索すると、さまざまな年齢と成熟度のプロジェクトがいくつかヒットします。

http://gf3.github.com/sandbox/が人気のようです。

于 2012-07-31T05:08:06.113 に答える
0

解決策 1: js.jsインタープリターを使用します。サンドボックス化を解決しますが、タイムアウト制御を解決します。

解決策 2: サンドボックス化されたワーカー node.js プロセスのプール (それぞれが独自の chroot または個別の vm 環境にある) を持ち、tcp ソケット/dnode/独自の rpc を介して通信します。入力タスクはキューで待機します。実行制限に達すると、プロセス全体が強制終了されて再生成されます。そうでない場合は、次のタスクに再利用されます。そうすれば、単一のマシンに制限されず、水平方向に簡単にスケーリングできます。

また、 travis-ciでワーカーがどのように実装されているかを確認してみてください

于 2012-07-25T13:00:07.473 に答える
0

ジョブを実行できる別のモジュールがあります - vm2。それとは異なりsandbox、ホワイトリストに登録された組み込みノード オブジェクトを使用して、信頼されていないコードを安全に実行できます。

于 2015-02-14T22:00:41.330 に答える