Evaluando Strings y Bloques

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.



Subsecciones
Casiano Rodriguez León 2015-01-07