Если есть система, в которой клиент записывает Java-код (* .java-файлы) и отправляет их на сервер, работающий на Java, как я могу сделать переданный код ненужными и вредоносными?Песочница Java-код перед компиляцией?
Для получения дополнительной информации: клиент будет писать текстовый Java-код (их классы), и код будет отправлен на сервер. На сервере код будет проверен, чтобы убедиться, что он разрешает действия. Если он проходит тест, он скомпилируется в файл .class, где затем загружается загрузчиком классов Java. Наконец, используя Reflection, методы затем можно вызывать и передавать параметры.
Я думаю, что могу видеть, как это сделать, но как я могу убедиться, что код, который скомпилирован, «безопасен»? Например, я бы не хотел, чтобы он порождал потоки или выполнял файл IO или взаимодействовал с системой, в которой он работает. Я думал, что могу сканировать входной файл для импорта, а если он не в белом списке, отбросьте файл. Кроме того, я думал, что если бы я хотел что-то ограничить, например, количество потоков, я мог бы позволить импортировать прокси-класс, который будет отслеживать потоки для каждого пользователя.
Будет ли это работать, или если нет пути?
Это может быть полезно для вас. http://stackoverflow.com/questions/502218/sandbox-against-malicious-code-in-a-java-application?rq=1 – Syd
Посмотрите на менеджера Securiy –
@Syd Спасибо за это. Я посмотрел вокруг с Google и на SO, но любая комбинация Java и плагина, который я использовал, как будто давала мне результаты о плагинах веб-браузера. Еще раз спасибо. – contrapsych