5

node.js (または他の SSJS ソリューション) を使用して、独自のコード + 内部で記述された外部コード (信頼されていない) を実行したいと考えています。

自分のコードを分離して保護する方法はありますか? 信頼されていないコードのモジュールとシステムへの影響を制限できますか (ファイルへのアクセス、非 HTTP ポートなどを制限します)?

4

3 に答える 3

1

あなたはこのプロジェクトをチェックアウトすることができます、それは非常に有望に思えます:

http://github.com/gf3/node-sandbox

個人的には、Node を使用して任意の SSJS を実行することはありません。あなたはおそらくこの解決策を好まないでしょうが、私にとっては約1年間うまくいきました:

Spidermonkey の API (Spidermonkey は Firefox の JS エンジン) の Perl 実装が利用可能です。私はいくつかの CGI の助けを借りてそれを接続しました。公開したい関数を正確に指定し (確かに、Perl... blech にあります)、好きなコードを実行できます。セットアップ全体が完全にサンドボックス化されているため、脆弱性のリスクはありません。DOM をシミュレートしません。

これをサーバーに実装した方法 (悪用を防ぐため) は、別のサーバーで REST API を介して 1 回限りのアクセスを許可するトークンを発行することでした。これは、トークンの正当性を強化するためのタイムスタンプを含む単純な HMAC 実装です。Perl スクリプトがリクエストを受け取ると、トークンを検証してスクリプトを処理します (スクリプトは POST リクエストの一部である必要があります)。その後、Perl スクリプトは結果を書き込むだけです。私のサーバーは、約 10 秒でタイムアウトになるように設定されています。

お役に立てれば!

于 2010-07-23T00:15:20.503 に答える
1

node.jsのドキュメントからこれをチェックしてください

script.runInNewContext([サンドボックス])

Script.runInNewContext (大文字の 'S' に注意) に似ていますが、プリコンパイルされた Script オブジェクトのメソッドになりました。script.runInNewContext は、sandbox をグローバル オブジェクトとしてスクリプトのコードを実行し、結果を返します。実行中のコードは、ローカル スコープにアクセスできません。サンドボックスはオプションです。

http://nodejs.org/api.html#script-runinnewcontext-105

于 2010-11-13T09:09:29.827 に答える
0

Cajaをご覧ください。サードパーティのコードを、明示的に付与したオブジェクトにのみコードがアクセスできる形式に変換します。

于 2010-11-09T21:37:57.987 に答える