0

このシナリオでは、ユーザーは自分の C コードをブラウザー経由で私のサーバーに送信します。その後、コードがコンパイルされてサーバー上で実行され、出力がユーザーに送信されます。

ユーザーは任意のコード (ウイルスやその他の誤動作コードを含む) を送信できるためです。私はそれを世話しなければなりません。

私の質問は、そのようなコードからサーバーを保護するにはどうすればよいですか?

4

4 に答える 4

4

Windows についてはお答えできませんが、Linux についてはお答えできます。

これは非常に複雑な問題です。次のことを考える必要があります。

  • クォータ制限
  • 非特権ユーザーとして実行されるコードをコンパイル/実行するプロセス。
  • プロセスを N 秒以上実行させない
  • プロセスが大量のメモリを割り当てないようにする

これは長期的なプロジェクトであり、数週間では正しく完了できないと言えます。

于 2012-07-16T10:38:11.193 に答える
2

あなたの質問はおそらく停止問題と同等であり、おそらく防弾の答えはありません(asm悪意のあるCコード、偽造された関数ポインター、計算されたgoto、戻りアドレスを破壊するバッファーオーバーフロー、dlsym&dlopenなどを考えてください)。

ショーンがコメントで述べたように (この質問を参照)、サンドボックス手法を使用できます。Alinsoar's answerは、問題の複雑さを示しています。

于 2012-07-16T10:36:00.007 に答える
1

考えるべきその他の問題: ゲスト プロセスを許可する権利: ソケットを開くことは許可されていますか? もしそうなら、あなたは彼にどのようなトラフィックを許可しますか?

ソケットを開いた場合、そのソケットを介して攻撃を仕掛けることができるため、問題はさらに複雑になります...

于 2012-07-16T20:38:00.787 に答える
0

ideone APIの使用を検討するかもしれませんが、一部のモバイル デバイス ソフトウェアはそうしています (たとえば CodeToGo ) 。

于 2012-07-16T22:17:41.527 に答える