Foros del Web » Programando para Internet » PHP »

Evitar injection con formulario php

Estas en el tema de Evitar injection con formulario php en el foro de PHP en Foros del Web. Hola gente, tengo un problema y no lo puedo solucionar. Desde hace un tiempo que estoy recibiendo injection dentro de mi base de datos que ...
  #1 (permalink)  
Antiguo 26/02/2014, 20:49
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Sonrisa Evitar injection con formulario php

Hola gente,
tengo un problema y no lo puedo solucionar.
Desde hace un tiempo que estoy recibiendo injection dentro de mi base de datos que provienen desde paginas web mias con formularios en php.
Esta es la imagen de este problema que no se como solucionarlo.



Alguien me puede echar una mano por favor.

Gracias por su tiempo
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #2 (permalink)  
Antiguo 26/02/2014, 20:58
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Evitar injection con formulario php

En PHP tenemos varias formas de hacerlo, entre ellas para bases de datos MySQL tenemos la función mysql_real_escape_string, que añadiremos en las variables que introducimos en la consulta.
Código PHP:
$respuesta=mysql_query("SELECT * FROM `Usuarios` WHERE `user`='".mysql_real_escape_string($name)."' AND `pass`='".mysql_real_escape_string($password)."'"
origen: http://www.genbetadev.com/seguridad-...yeccion-de-sql

si buscas en google hay demaciada informacion
  #3 (permalink)  
Antiguo 26/02/2014, 23:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Evitar injection con formulario php

A lo acertadamente dicho por enlinea777, añado que también debes evitar los ataques XSS. Para ello, puedes emplear expresiones regulares o la función strip_tags().

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 27/02/2014, 06:33
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Evitar injection con formulario php

Hola gente, gracias por responder.
He estado leyendo y me parece que la función mysql_real_escape_string() queda obsoleta en PHP5.5, esto es correcto?
Como sea, en mis paginas web, el archivo que inserta la información en la BD ya tengo puesta esta función, pero no evita la injección, por cada campo que recibo del formulario tengo esto:

Código PHP:
Ver original
  1. $first_name = mysql_real_escape_string($_POST['first_name']);
  2. $last_name = mysql_real_escape_string($_POST['last_name']);
  3. $phone = mysql_real_escape_string($_POST['phone']);
  4. $email = mysql_real_escape_string($_POST['email']);

pero igual me inserta cualquier cosa.

Gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #5 (permalink)  
Antiguo 27/02/2014, 09:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Evitar injection con formulario php

Cita:
Iniciado por desoler Ver Mensaje
He estado leyendo y me parece que la función mysql_real_escape_string() queda obsoleta en PHP5.5, esto es correcto?
Así es, de ahora en adelante debes utilizar la función mysqli_real_escape_string() de la extensión MySQLi. Por otro lado, dicha función no evita que insertes cualquier cosa, pues como dice en el apartado de esta función en el manual oficial:

Cita:
Iniciado por Manual oficial de PHP
Escapa los caracteres especiales de una cadena para usarla en una sentencia SQL, tomando en cuenta el conjunto de caracteres actual de la conexión.
Para validar el formato del contenido, usa expresiones regulares.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 27/02/2014, 09:37
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Evitar injection con formulario php

También usar sentencias preparadas o procedimientos almacenados

Saludos
  #7 (permalink)  
Antiguo 27/02/2014, 10:11
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Evitar injection con formulario php

ok, es que no me funciona.
Esto es lo que trato de utilizar:

Código PHP:
Ver original
  1. $first_name = mysqli_real_escape_string($conexion, $_POST['first_name']);
  2.  
  3. $first_name = mysqli_real_escape_string($conexion, $first_name);
  4.  
  5. if (mysqli_query($conexion, "INSERT into datos (first_name) VALUES ('$first_name')")) {
  6. echo "insercion correcta";
  7. }else{
  8. echo "fallo en la insercion";
  9. }

y el error que me da es:

Código PHP:
Ver original
  1. Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, resource given in ......
  2.  
  3. Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in ......
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #8 (permalink)  
Antiguo 27/02/2014, 10:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Evitar injection con formulario php

Ten en cuenta que la conexión con la extensión MySQLi es un tanto distinta a la de MySQL. Esta información te servirá: http://www.php.net/manual/es/mysqli.construct.php

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 27/02/2014, 10:33
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Evitar injection con formulario php

ok, Alexis88,

ya he leido y entiendo que debo cambiar todas mi conexiones, pero el resto del codigo es el correcto?, es asi como se debe aplicar?

gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #10 (permalink)  
Antiguo 27/02/2014, 14:53
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Evitar injection con formulario php

Cita:
Iniciado por desoler Ver Mensaje
el resto del codigo es el correcto?, es asi como se debe aplicar?
Sí.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: injection, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:27.