Запуск ненадежного кода PureScript
Можно ли использовать PureScript для безопасного * запуска ненадежного пользовательского кода? Можно ли надежно обеспечить чистоту и другие ограничения, используя систему типов (как в Safe Haskell)?
Другими словами, возможно ли использовать PureScript для очистки ненадежного пользовательского кода?
*) безопасный от XSS, нет доступа к глобальным объектам и т. д.
1 ответ
Я не могу дать вам очень точный ответ на этот вопрос, но я постараюсь дать вам чувство направления.
Одна вещь, которая приходит на ум автоматически, заключается в том, что вам нужно поместить в песочницу код пользователя, чтобы он мог играть только в песочнице, а не в браузере. Тем не менее, вы должны быть очень осторожны относительно того, как вы настроите эту песочницу, чтобы вещи не просочились в песочницу. Это может быть довольно большой проблемой, и я думаю, что вам нужно немного изучить это с точки зрения JavaScript.
Что касается системы типов, PureScript не может напрямую выполняться браузером. Целью компиляции PureScript является в основном JavaScript, который может быть выполнен браузером. Однако, если я правильно помню, компилятор PureScript фактически написан на Haskell. Поскольку браузер не может запустить его, вам необходим сервер, чтобы скомпилировать его для себя.
В целом, я бы сказал, что принятие кода PureScript другого пользователя - очень рискованный вариант, и я бы посоветовал вам пересмотреть свое решение. Вы можете выбрать альтернативу, такую как http://try.purescript.org/, которая позволяет вам писать фрагменты кода PureScript в браузере. Однако я не могу гарантировать вам, что это будет полностью безопасно.