elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [?]Para que sirve eval()?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?]Para que sirve eval()?  (Leído 8,093 veces)
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
[?]Para que sirve eval()?
« en: 25 Junio 2009, 23:54 pm »

Pues esa es mi duda, mas que util la verdad es que me parece una vulnerabilidad para un programador descuidado.
Porque ejecutar una sentencia desde eval y no desde el código normal?
Gracias


En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.185


>.<


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #1 en: 26 Junio 2009, 00:04 am »

por que con eval() podes generar codigo PHP dinamicamente :D

generacion de arrays, funciones, cosas mas dinamicas que dinamicas :xD

Le metes un filtro para que solo pasen cosas locales, o sea, nunca recuperar variables ingresadas por el usuario, o evitarlo lo mas que puedas :D


En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #2 en: 26 Junio 2009, 03:23 am »

eval() es la piedra fundamental de cualquier lenguaje interpretado, todo lo que hace un lenguaje interpretado es llamar a eval(), lisp hace eval(), python hace eval(), ruby hace eval(), perl hace eval() y PHP hace eval(), lee la línea y se la pasa a eval.

No hace mucho, recuerdo haber leído fundamentos de la programación en perl, en la cual hacían un requiere con la función eval, los pasos eran más o menos los siguiente:
tomaban el archivo con código perl
lo abrían
se lo pasaban a eval()
y ya tenía disponible todas las funciones de ese módulo, PHP nace de perl y por lo tanto no dudo que require/include no hagan más o meno eso, y sin eval no existiría ni include ni require, o sea, sería aún más chicloso el código PHP.
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
HardieVon

Desconectado Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #3 en: 26 Junio 2009, 05:14 am »

eval() es la piedra fundamental de cualquier lenguaje interpretado, todo lo que hace un lenguaje interpretado es llamar a eval(), lisp hace eval(), python hace eval(), ruby hace eval(), perl hace eval() y PHP hace eval(), lee la línea y se la pasa a eval.

No hace mucho, recuerdo haber leído fundamentos de la programación en perl, en la cual hacían un requiere con la función eval, los pasos eran más o menos los siguiente:
tomaban el archivo con código perl
lo abrían
se lo pasaban a eval()
y ya tenía disponible todas las funciones de ese módulo, PHP nace de perl y por lo tanto no dudo que require/include no hagan más o meno eso, y sin eval no existiría ni include ni require, o sea, sería aún más chicloso el código PHP.

man y tienes algun ejemplo en php que el eval sea impresindible?

por que yo eh hecho sistemas muy robustos y la verdad no eh ocupado mucho el eval, lo eh sabido suplementar.

algun ejemplo que no sea de criptologia
En línea

^Cloud^

Desconectado Desconectado

Mensajes: 64


La tierra es plana.


Ver Perfil
Re: [?]Para que sirve eval()?
« Respuesta #4 en: 26 Junio 2009, 11:13 am »

Que yo sepa eval evalua una cadena y si en ella encuentra código ejecutable (en este caso PHP) lo ejecuta.

Es muy últil para hacer cosas como templates (minis... y normalmente se realiza en el buffer de salida de php) o tener formularios donde incluir código php en textareas... por ejemplo.


Un saludo,


En línea

Ahora resulta que imagino mi pasado
y llevo en esta clínica cuarenta años.
Nunca jamás he pisado la calle
y el electroshock ha sido mi padre
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #5 en: 26 Junio 2009, 12:52 pm »

He leído una situación útil.
Imagina que has sacado una fórmula matemática de una base de datos y la has guardado en la variable $formula.
Para obtener el resultado no podrías hacer
Código
  1. $resultado = $formula;
Porque resultado también contendría la formula.
Pero si puedes hacer esto :
Código
  1. eval("$resultado = ".$formula);
  2.  
Y se tomaría $formula como una expresión matemática y no como una string.
Gracias por responder
En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #6 en: 26 Junio 2009, 15:06 pm »

@HardieVon
Código
  1. implode(',',
  2.    array_map(create_function('$e', 'return \'"\'.$e.\'"\';'), array_values($attr_value))));
  3.  
que tu no lo hayas usado no quiere decir que no exista y que no tenga utilidad, no se como estará implementada create_function, pero de lo que estoy seguro es que hace uso de la función eval().

Míralo como asm y C, en C puedes usar asm cuando quieras, sin embargo existen muchos sistemas y muy robustos que no tienen una línea de asm.
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
HardieVon

Desconectado Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: [?]Para que sirve eval()?
« Respuesta #7 en: 27 Junio 2009, 03:13 am »

@HardieVon
Código
  1. implode(',',
  2.    array_map(create_function('$e', 'return \'"\'.$e.\'"\';'), array_values($attr_value))));
  3.  
que tu no lo hayas usado no quiere decir que no exista y que no tenga utilidad, no se como estará implementada create_function, pero de lo que estoy seguro es que hace uso de la función eval().

Míralo como asm y C, en C puedes usar asm cuando quieras, sin embargo existen muchos sistemas y muy robustos que no tienen una línea de asm.
Fijate lo que dices men por que todo lo que escribiste es mentira, citame donde puse que no lo eh usado y donde dije que no existe?.

braulio - es  muy bueno tu ejemplo. ;)

PD: me apendeje.
ando estresado, ni mas ni menos ;)

que por cierto aqui en este post. demuestro un excelente uso.

http://foro.elhacker.net/php/iquestcomo_hago_include_a_una_web_externa-t259360.0.html




« Última modificación: 27 Junio 2009, 03:25 am por HardieVon » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
donde puedo en contra el encristador eval unescape
Seguridad
manu70 1 2,551 Último mensaje 26 Agosto 2011, 16:00 pm
por Randomize
Enlazando propiedades con Eval en vez de Bind
.NET (C#, VB.NET, ASP)
DanteInfernum 0 895 Último mensaje 27 Febrero 2014, 18:26 pm
por DanteInfernum
javascript seguridad eval
Desarrollo Web
matake 3 1,669 Último mensaje 25 Julio 2016, 03:07 am
por engel lex
equivalente a eval()? | javascript
Desarrollo Web
Drakaris 3 588 Último mensaje 25 Enero 2021, 00:17 am
por Drakaris
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines