Запустите nodejs в песочнице с виртуальной файловой системой - PullRequest
0 голосов
/ 12 января 2020

Я работаю над проектом онлайн python компилятора. Когда пользователь отправляет python, сервер выполнит его. Что я хочу сделать, так это создать песочницу с виртуальной файловой системой, выполнить этот сценарий и установить ее, и эта песочница должна находиться далеко от файловой системы реального сервера, но nodejs должна иметь возможность контролировать stdin и stdout этой песочницы.

Как сделать это возможным?

1 Ответ

1 голос
/ 12 января 2020

Docker - отличный способ для песочницы.

Вы можете запустить

docker run --network none python:3

со своего node.js сервера. Посмотрите на другие переключатели docker run , чтобы подключить как можно больше дыр в безопасности.

Проблема в том, что вы запускаете команду docker со своего node.js сервер и передайте код пользователя python через стандартный ввод .

Теперь, если ваш сервер node.js находится на одном компьютере, а sendbox должен работать на другом компьютере, вы указываете docker для подключения к другая машина, использующая переменную среды DOCKER_HOST .

Docker, контейнеры обертывают программное обеспечение в полную файловую систему, которая содержит все, что ему нужно для запуска: код, время выполнения, системные инструменты, системные библиотеки - в основном все, что вы можете установить на сервере. Это гарантирует, что он всегда будет работать одинаково, независимо от среды, в которой он работает.

Возможно, стоит прочитать https://instabug.com/blog/the-difference-between-virtual-machines-and-containers/

...