Запустите nodejs в песочнице с виртуальной файловой системой

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

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


person Sarthak Pokharel    schedule 12.01.2020    source источник
comment
Пожалуйста, берите пример.   -  person hamed baziyad    schedule 12.01.2020


Ответы (1)


Docker — отличный способ песочницы.

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

docker run --network none python:3

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

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

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

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

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

person root    schedule 12.01.2020