0

child_process.execFile コマンドを使用してコマンドライン ユーティリティを実行する node.js アプリがあります。

ユーザーがローカルでコマンドを実行できるのではないかと心配しています (rm / -rf恐ろしいシナリオが思い浮かびます)。

Bash スクリプトに execFile を使用するのは安全ですか? execFile に渡すフラグが、サーバーをホストしている UNIX ボックスによってエスケープされるようにするためのヒントはありますか?

編集

より正確に言うと、ファイルに送信される引数がコマンドとして解釈され、実行される可能性があるかどうかは疑問です。

もう1つの懸念は、技術的にこの質問の範囲外であるbashスクリプト自体の内部にあります。

4

2 に答える 2

1

child_process.execFileユーザーがコマンド名を指定しない限り、単独で使用することは完全に安全です。

シェルでコマンドを実行しないため (実行するようchild_process.execに)、何もエスケープする必要はありません。

于 2013-03-01T23:11:28.567 に答える
1

child_process.execFileノードプロセスのユーザーIDでコマンドを実行するため、すべてのサーバーファイルの削除を含む、ユーザーが実行できることは何でも実行できます。

質問で暗示しているように見えるため、ユーザーにコマンドを渡すことはお勧めできません。

を使用してサンドボックスでスクリプトを実行しchroot、コマンドと使用可能なファイル システムに存在するものを制限することを検討できますが、これは急いで完了する可能性があります。

渡すコマンドは、何らかの種類の を介して直接実行されるexecため、実行しようとしているものがスクリプトでない限り、エスケープする必要はありません。

于 2013-03-01T22:46:15.970 に答える