Ciao a tutti,
in un progetto ruby ho bisogno di gestire un sistema di “scripting” (pi
o
meno), magari (e possibilmente) con ruby stesso
Il ruby esterno, quando viene valutato, deve poter definire classi e
metodi
che poi verranno istanziati e lanciati dal codice ruby principale.
Il mio problema sulla sicurezza. Usando eval + $SAFE mi ritrovo nella
situazione in cui con $SAFE=3 il codice viene valutato ma pu ancora
eseguire operazioni scomode come un “exit”. Usando $SAFE=4 non posso pi
fare neanche l’eval del codice
In aggiunta devo tenere di conto anche della possibilit che il codice
caricato esegua qualcosa tipo: while true do; end
Eh Nicola… questo un bel dilemma… dovresti cacciare quel
processo in una sorta di sandbox.
Per da quello che leggo qui[1], potresti aprire un Thread a parte,
impostare SAFE a 4 e fare il load() del codice che, come giustamente
dici tu, da considerarsi malicious per definizione in questo caso.