Запуск ненадежного кода PureScript

Можно ли использовать PureScript для безопасного * запуска ненадежного пользовательского кода? Можно ли надежно обеспечить чистоту и другие ограничения, используя систему типов (как в Safe Haskell)?

Другими словами, возможно ли использовать PureScript для очистки ненадежного пользовательского кода?

*) безопасный от XSS, нет доступа к глобальным объектам и т. д.

1 ответ

Решение

Я не могу дать вам очень точный ответ на этот вопрос, но я постараюсь дать вам чувство направления.

Одна вещь, которая приходит на ум автоматически, заключается в том, что вам нужно поместить в песочницу код пользователя, чтобы он мог играть только в песочнице, а не в браузере. Тем не менее, вы должны быть очень осторожны относительно того, как вы настроите эту песочницу, чтобы вещи не просочились в песочницу. Это может быть довольно большой проблемой, и я думаю, что вам нужно немного изучить это с точки зрения JavaScript.

Что касается системы типов, PureScript не может напрямую выполняться браузером. Целью компиляции PureScript является в основном JavaScript, который может быть выполнен браузером. Однако, если я правильно помню, компилятор PureScript фактически написан на Haskell. Поскольку браузер не может запустить его, вам необходим сервер, чтобы скомпилировать его для себя.

В целом, я бы сказал, что принятие кода PureScript другого пользователя - очень рискованный вариант, и я бы посоветовал вам пересмотреть свое решение. Вы можете выбрать альтернативу, такую ​​как http://try.purescript.org/, которая позволяет вам писать фрагменты кода PureScript в браузере. Однако я не могу гарантировать вам, что это будет полностью безопасно.

Другие вопросы по тегам