В настоящее время я пишу инструмент автоматического проверки исходного кода. В основном студенты должны загружать свои файлы исходного кода на C# в качестве решения для различных задач. Сервер компилирует эти файлы в рамках и проверяет программу на разные входные файлы. Если результат, который генерирует программа, является допустимым (равным предопределенному выходу), то программа действительна, и ученик получает очки для программы.Автоматическая компиляция и запуск стороннего кода
Но я не думаю, что могу доверять студентам;) Может попытаться получить доступ к файлам или выполнить другие плохие вещи на сервере.
Что я могу сделать, чтобы ограничить доступ к минимуму?
Что мне нужно учитывать?
Allready думал:
- доступа к файлу
- макс. Время выполнения
- начиная другие ПРОГРАММЫ
- делает сетевой подсистемы
- отражение
В настоящее время единственным способом проверки кода я мог себе представить, должен был искать его для ключевого слова, как «Файл», «Net», «Процесс», ... с использованием регулярных выражений.
Но я уверен, что это ОЧЕНЬ небезопасно.
Любые предложения?
Просто, чтобы дважды проверить, вы планируете дать ученику, который разбивает вашу песочницу на A +? Очень озадачивающе, что вы не станете им назначать. Anyhoo, я с удовольствием возьму их резюме. –
Ну, большинство из них новички, но когда они поправляются ... Если студент способен сломать песочницу и оставить текстовый файл с информацией, которую он разбивает на сервере, все в порядке, и он получает A +, но я не знаю, t хотят, чтобы они разбивали сервер. – raisyn