このシナリオでは、ユーザーは自分の C コードをブラウザー経由で私のサーバーに送信します。その後、コードがコンパイルされてサーバー上で実行され、出力がユーザーに送信されます。
ユーザーは任意のコード (ウイルスやその他の誤動作コードを含む) を送信できるためです。私はそれを世話しなければなりません。
私の質問は、そのようなコードからサーバーを保護するにはどうすればよいですか?
このシナリオでは、ユーザーは自分の C コードをブラウザー経由で私のサーバーに送信します。その後、コードがコンパイルされてサーバー上で実行され、出力がユーザーに送信されます。
ユーザーは任意のコード (ウイルスやその他の誤動作コードを含む) を送信できるためです。私はそれを世話しなければなりません。
私の質問は、そのようなコードからサーバーを保護するにはどうすればよいですか?
Windows についてはお答えできませんが、Linux についてはお答えできます。
これは非常に複雑な問題です。次のことを考える必要があります。
これは長期的なプロジェクトであり、数週間では正しく完了できないと言えます。
あなたの質問はおそらく停止問題と同等であり、おそらく防弾の答えはありません(asm
悪意のあるCコード、偽造された関数ポインター、計算されたgoto、戻りアドレスを破壊するバッファーオーバーフロー、dlsym
&dlopen
などを考えてください)。
ショーンがコメントで述べたように (この質問を参照)、サンドボックス手法を使用できます。Alinsoar's answerは、問題の複雑さを示しています。
考えるべきその他の問題: ゲスト プロセスを許可する権利: ソケットを開くことは許可されていますか? もしそうなら、あなたは彼にどのようなトラフィックを許可しますか?
ソケットを開いた場合、そのソケットを介して攻撃を仕掛けることができるため、問題はさらに複雑になります...
ideone APIの使用を検討するかもしれませんが、一部のモバイル デバイス ソフトウェアはそうしています (たとえば CodeToGo ) 。