Запустите данную программу пользователем - PullRequest
1 голос
/ 02 мая 2011

В этом ответе на вопрос кто-то может найти много сайтов (например, ideone ), позволяющих пользователю писать и запускать программы в Интернете.Я заинтересован в том, чтобы сделать что-то похожее (только для кода Java), и мне было интересно узнать, как это можно сделать.

Простая идея - взять код пользователя, отправить его на сервер, скомпилировать его, запуститьзатем отправьте вывод пользователю.Но что, если у пользователя есть вредоносный код, такой как удаление файлов моего сервера и т. Д.?Если бы я хотел создать то же самое для языка программирования C, то, наверное, я мог бы просто получить код сборки файла C, посмотреть, какие системные вызовы используются, и решить, является ли данный код вредоносным или нет.Основываясь на предыдущей идее, я должен смотреть в Java, созданный программой байт-код?Есть ли лучший / более простой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

Не изобретайте велосипед, Java имеет механизм SecurityManager для ограничения потенциально вредоносного кода

Ссылка

1 голос
/ 02 мая 2011

В дополнение к тому, что сказал Шон Патрик Флойд в своем ответе, вы можете также добавить сам процесс в свою операционную систему.Создайте нового пользователя на вашем хосте (машине, которая выполняет код) и назначьте ему очень мало разрешений (только то, что требуется для запуска кода).Запустите процесс от имени этого пользователя.

Таким образом, независимо от присутствия SecurityManager, порожденный процесс не сможет ничего навредить.

...