Je veux être en mesure d'exécuter du code Ruby non filtré. Je veux être en mesure de transmettre des variables au code non fiable qu'il peut utiliser. Je veux aussi que le code me renvoie un résultat. Voici un exemple conceptuel de ce que je penseComment exécuter du code Ruby non sécurisé dans un bac à sable sécurisé?
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.
Juste pour clarifier, j'utilise essentiellement le code non sécurisé en fonction. Je veux fournir ses quelques entrées, puis lui permettre d'écrire à la sortie. C'est tout ce que je veux vraiment, je ne m'inquiète pas comment c'est fait, je veux juste la possibilité d'utiliser le code Ruby non fiable comme une sorte de fonction. La solution ne doit pas ressembler au code que j'ai écrit plus haut, je l'utilise juste pour illustrer ce que je veux.
Maintenant, je peux penser actuellement 3 façons de le faire:
- Utilisez la construction de niveau de sécurité de $ ci-dessus.
- whytheluckystiff a un plugin Sandbox pour ruby
- Je pourrais exécuter chaque fonction dans sa propre machine virtuelle, en utilisant une sorte de logiciel de virtualisation comme vmware ou Xen ou quelque chose.
Je me demande si quelqu'un a des recommandations pour exécuter le code ruby non approuvé d'une manière fonctionnelle? Quelle option recommanderiez-vous? Comment vous y prendrez-vous? Merci.
Est-ce que quelqu'un a des références qui expliquent ce qui ne va pas avec $ SAFE? – sheldonh