現在、自動ソース コード検証ツールを作成しています。基本的に、学生はさまざまなタスクのソリューションとして C# ソース コード ファイルをアップロードする必要があります。サーバーは、フレームワーク内でこれらのファイルをコンパイルし、さまざまな入力ファイルに対してプログラムをチェックします。プログラムが生成する出力が有効な場合 (定義済みの出力と等しい場合)、プログラムは有効であり、学生はプログラムのポイントを取得します。
しかし、私は学生を信頼できるとは思いません;) ファイルへのアクセスを取得しようとしたり、サーバー上で他の悪いことを実行しようとしたりするかもしれません.
アクセスを最小限に制限するにはどうすればよいですか?
何を考慮する必要がありますか?
すでに考えた:
- ファイルアクセス
- 最大 実行時間
- 他のプログラムの開始
- ネットワーキングのことをしている
- 反射
現在、私が想像できるコードをチェックする唯一の方法は、正規表現を使用して「ファイル」、「ネット」、「プロセス」などのキーワードで検索することでした。
しかし、これは非常に安全ではないと確信しています。
助言がありますか?