問題タブ [node-vm2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - NodeJS ファイバーと VM サンドボックスを組み合わせる
次のような信頼できないコードを Node で実行したいと考えています。
ファイバーを使用して、同期動作が期待どおりに機能するようになりました。
問題は、コードをサンドボックス化する方法です。ファイバーを使用する必要があるため、非常に複雑になります。どうやって始めればいいのかよくわかりません。上記をvm2でサンドボックス化するにはどうすればよいですか? たとえば、次は明らかに機能しません。
( VM 内のサンドボックス化されたコードにはgreen_led
とが表示されないため、機能しません)。sleep
これはどのように行うべきですか?また...
- おそらく、ファイバーや実装
green_led
など、すべてを VM 内で実行する必要がありますか? - それとも、VM によって実行されるコードを最小限に抑え、代わりに何らかの方法でホワイトリスト/プロキシを使用する方がよいでしょう
green_led
かsleep
? そもそも繊維がどのように機能するかを理解するのは非常に困難です。
node.js - ノード vm2 で「module.exports = function(foo){...}」を実行する
Node と仮想マシンvm2は初めてです。後者のドキュメントでは、その使用例を示しています。
質問: これは実際に何をしているのですか?
まず、なぜmodule.exports
ここで使われているのですか?つまり、なぜ以下のように省略しないのでしょうか?
第二に、それを見る別の方法: 通常のノードプログラミングではrequire(inc)
、あるファイルで変数に割り当てるために使用されるのは初心者の知識であり、別のファイル (によって選択されたinc
) に割り当てられmodule.exports
ます。上記の使用法とどう違うのvm2
ですか?
具体的require(...)
には、上記で暗黙的に呼び出されていますか? 1 つのサンドボックス内で複数のモジュールを (上記のように) 定義し、参照するにはどうすればよいでしょうか?
どのような質問をするべきかを知ることさえ困難です。実際には、通常のノード プログラミングとは異なる方法で をmodule.exports
使用してvm2
、違いを強調する方法の説明を望んでいます。