Jak uruchomić niezaufany kod Ruby w bezpiecznym obszarze izolowanym?

Chcę mieć możliwość uruchomienia niezatwierdzonego kodu ruby. Chcę mieć możliwość przekazywania zmiennych do tego niezaufanego kodu, którego może użyć. Chcę również, aby ten kod zwrócił mi wynik. Oto koncepcyjny przykład tego, co myślę

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.

Aby wyjaśnić, zasadniczo używam niezaufanego kodu jako funkcji. Chcę podać jego niektóre dane wejściowe, a następnie pozwolić mu na zapisywanie danych wyjściowych. To jest wszystko, czego naprawdę chcę, nie obchodzi mnie, jak to się robi, chcę tylko, aby użyć niezaufanego kodu Ruby jako pewnego rodzaju funkcji. Rozwiązanie nie musi wyglądać jak kod, który napisałem powyżej, używam go tylko do zilustrowania tego, czego chcę.

Obecnie mogę teraz myśleć o 3 sposobach:

Użyj konstrukcji $ SAFE level powyżej.whytheluckystiff ma wtyczkę Sandbox dla rubyMogłem uruchamiać każdą funkcję we własnej maszynie wirtualnej, używając jakiegoś oprogramowania do wirtualizacji os, takiego jak vmware lub Xen lub coś takiego.

Zastanawiam się, czy ktoś ma jakieś zalecenia dotyczące uruchamiania niezaufanego kodu ruby ​​w funkcjonalny sposób? Jaką opcję poleciłbyś? Jak byś to zrobił? Dzięki.

questionAnswers(4)

yourAnswerToTheQuestion