как запускать программы на Java в закрытой песочнице - PullRequest
3 голосов
/ 16 февраля 2012

Я пытался создать онлайн-компилятор Java. Но выполнение клиентского кода на сервере вызывает много проблем с безопасностью.

Я могу думать о немногих - бесконечные циклы, ограниченный доступ к API, ограничение использования памяти и т. Д.

Я посмотрел здесь и здесь . Но у меня есть еще несколько вопросов.

1) Ограниченный доступ к API возможен с помощью инструмента политики. Но как мне проверить использование памяти и процессора (бесконечные циклы, ..)?

2) Инструмент политики предоставляет опции для предоставления разрешений, а не для ограничения. Итак, если я выберу «Разрешение во время выполнения» и getStacktrace в качестве цели, тогда все остальные будут ограничены?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Вы можете использовать Ideone API.У вас есть определенные ограничения для бесплатной учетной записи, но она освобождает вас от бремени безопасности и всего остального.

Он доступен как веб-сервис, а его WSDL можно найти здесь: ideone.com/api/1/service.* 1003 WSDL *

0 голосов
/ 17 февраля 2012

Одна из идей - запустить код в отдельном потоке.и убить этот поток, если он не завершится в максимально допустимое время.

...