![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
11/09/2011, 08:27
|
![Avatar de Raziel_Ravenheart](http://static.forosdelweb.com/customavatars/avatar433021_1.gif) | | | Fecha de Ingreso: agosto-2011 Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 5 meses Puntos: 37 | |
Respuesta: Escribir nombre de variables en consultas SQL (forma especial) Bueno te responderé algo rápido, estas obteniendo esos datos por medio de la variable $_POST, lo que significa que estas enviando esos datos desde un formulario, y aparte de eso, ejecutas los valores en la variable $_POST directamente con eval... pfffff GRAVISIMO ERROR.
Eval te permite evaluar cualquier expresión, y si un usuario avanzado y malicioso, te envia una intrusión, un ataque XSS o peor una inyección sql, puedes despedirte de tu base de datos.
Mi consejo es que no utilices eval para nada, solo cuando seas tu mismo quien sabe de donde y como provienen los datos, mi consejo principal, es que cambies ese código para que no tengas que utilizar la función eval, aquí te dejo un documento de seguridad, que te recomiendo leas por completo:
http://www.forosdelweb.com/f18/inyeccion-xss-seguridad-php-eval-otras-funciones-ayuda-891245/
http://es.wikipedia.org/wiki/Eval#Seguridad
http://www.zonavirus.com/articulos/eval-la-funcion-maligna-de-javascript.asp
En el ultimo enlace dice que es de javascript, pero creeme cuando te digo, que es maligna en casi cualquier lenguaje de programación, y ahora también lee eesto:
http://mis-algoritmos.com/seguridad-en-aplicaciones-web
Por otro lado, para que deseas convertir las variables dentro de $_POST, si con un
foreach($_POST as $indice => $valor)
obtienes el indice en $indice y el valor en $valor, cuando $indice es el nombre de la variable que le asignaste desde el <form>, por medio del atributo name, mira el uso del foreach:
http://php.net/manual/es/control-structures.foreach.php
Exitos, y te recomiendo que cambies el código para que no uses la función eval. Tiene muchos riesgos si alguien se llega a dar cuenta incluso que no estas usando htmlentities o mysql_real_escape_string |