El método eval de Kernel permite evaluar el código contenido en un objeto String:
>> x = 1 => 1 >> eval "x+1" => 2
en general, se desaconseja
el uso generalizado de eval
cuando se trabaja en una aplicación
distribuída en la que las cadenas a evaluar pueden venir de fuentes externas.
Es conveniente comprobar primero la estructura de dichas cadenas.
In this example an attacker can control all or part of an input string that is fed into an eval()
function call
myvar = "varname"; x = params['arg']; eval("myvar = x");The argument of
eval
will be processed as Ruby, so additional
commands can be appended. For example, if arg
is set to
"10; system %q{/bin/echo uh-oh}additional code is run which executes a program on the server, in this case
/bin/echo
.