我目前正在編寫一個自動源代碼驗證工具。基本上,學生必須上傳他們的C#源代碼文件作爲不同任務的解決方案。服務器在框架內編譯這些文件,並根據不同的輸入文件檢查程序。如果程序生成的輸出有效(等於預定義的輸出),則程序是有效的,並且學生獲得該程序的積分。自動編譯和運行第三方代碼
但我不認爲我可以信任學生;)可能試圖獲得文件訪問權限或在服務器上執行其他不好的事情。
我能做些什麼來限制訪問權限?
我需要考慮什麼?
已歷經想過:
- 文件訪問
- 最大。執行時間
- 開始其他programms的
- 做網絡的東西
- 反射
目前檢查的代碼,我能想象到搜索它像「文件」,「網」關鍵字的唯一途徑, 「過程」,...使用正則表達式。
但我很確定這是非常不安全的。
有什麼建議嗎?
只是爲了仔細檢查,你打算給學生打破你的沙箱A +?非常令人費解,你不會讓它成爲他們的任務。 Anyhoo,我會很樂意接受他們的簡歷。 –
大多數人都是初學者,但是當他們變得更好時......如果一個學生可以打破沙盒並留下帶有信息的文本文件,他就會在服務器上打破它,一切都很好,他得到了A +,但是我不'不希望他們崩潰服務器。 – raisyn