Как запустить ненадежный код Ruby в безопасной песочнице?
Я хочу, чтобы можно было запустить ненадежный код ruby. Я хочу иметь возможность передавать переменные в указанный недоверенный код, который он может использовать. Я также хочу, чтобы указанный код возвращал мне результат. Вот концептуальный пример того, что я думаю
input = "sweet"
output = nil
Thread.start {
$SAFE = 4
#... untrusted code goes here, it uses the input variable(s)
#to calculate some result that it places in the output variable
}
#parse the output variable as a string.
Просто чтобы уточнить, я в основном использую ненадежный код в качестве функции. Я хочу предоставить некоторые входные данные, а затем разрешить запись в выходной файл. Это все, чего я действительно хочу, мне все равно, как это делается, я просто хочу использовать ненадежный код Ruby в качестве функции. Решение не должно выглядеть как код, который я написал выше, я просто использую его для иллюстрации того, что я хочу.
Теперь я могу думать о 3 способах сделать это:
Используйте конструкцию уровня $ SAFE выше.whytheluckystiff имеет плагин песочницы для рубинаЯ мог запускать каждую функцию на своей виртуальной машине, используя какое-то программное обеспечение для виртуализации ОС, такое как vmware или Xen или что-то еще.Мне интересно, есть ли у кого-нибудь рекомендации по функциональному запуску ненадежного рубинового кода? Какой вариант вы бы порекомендовали? Как бы вы пошли об этом? Благодарю.