Foros del Web » Programando para Internet » PHP »

Como evitar una inyección sql?

Estas en el tema de Como evitar una inyección sql? en el foro de PHP en Foros del Web. Hola amigos, me gustaria mucho saber como puedo evitar una inyección sql, donde debo colocar esas sentencias, que códigos debo tener en cuenta para hacer ...
  #1 (permalink)  
Antiguo 23/11/2012, 16:03
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
De acuerdo Como evitar una inyección sql?

Hola amigos, me gustaria mucho saber como puedo evitar una inyección sql, donde debo colocar esas sentencias, que códigos debo tener en cuenta para hacer pruebas en mi login ademas de este ('or 1=1--'), si alguien me puede facilitar por favor ejemplos y tutoriales, les estaré agradecido completamente.

Gracias!

  #2 (permalink)  
Antiguo 23/11/2012, 16:24
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Respuesta: Como evitar una inyección sql?

Te dijo un link en donde se habla acerca de este tema. php.net

Saludos.
  #3 (permalink)  
Antiguo 23/11/2012, 16:54
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Gracias amigo!

Si tienes alguna info extra, no estaria de mas.

  #4 (permalink)  
Antiguo 23/11/2012, 19:20
 
Fecha de Ingreso: mayo-2012
Ubicación: República Dominicana
Mensajes: 37
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: Como evitar una inyección sql?

Puedes usar el "mysql_real_escape_string", ejemplo:

Código:
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);

$query = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password' LIMIT 1");
espero que te ayude ;)
  #5 (permalink)  
Antiguo 23/11/2012, 19:30
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Como evitar una inyección sql?

usar PDO
  #6 (permalink)  
Antiguo 26/11/2012, 08:18
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Voy a probar, ya les comentaré, gracias!
  #7 (permalink)  
Antiguo 26/11/2012, 14:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Hola de nuevo, tengo una duda, en el aplicativo que trabajo, que esta montado en un servidor, hago pruebas de inyeccion sql y puedo ingresar comprobando su vulnerabilidad, pero si hago pruebas en mi localhost, no me produce error alguno, o sea, no puedo entrar.....si me hago entender?

Que debo hacerle a mi servidor local (wamp) para poder probar que estoy evitando estas inyecciones sql y poder subirl las correcciones al servidor?

Gracias, espero sus comentarios!
  #8 (permalink)  
Antiguo 26/11/2012, 14:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como evitar una inyección sql?

Como te indicaron con PDO es suficiente para evitar esa inyección, usa bindParam o bindValue para ello, también hay un tema que habla sobre inyección SQL en el tema que guarda los aportes, verifícalo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 26/11/2012, 14:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Si, gracias por tu respuesta, pero lo que necesito, antes de utilizar PDO, es hacer pruebas en mi localhost, pero este no me deja probar, no salen errores y no me permite el ingreso si no me logeo correctamente, y el mismo aplicativo ya montado en un servidor, es facil violar su seguridad. No se si me hago entender.
  #10 (permalink)  
Antiguo 29/11/2012, 13:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Amigos, algun aporte al respecto? Gracias!
  #11 (permalink)  
Antiguo 29/11/2012, 14:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como evitar una inyección sql?

Ya se te ha indicado formas de lograr evitar inyección sql, si quieres saber más del tema te recomiendo una búsqueda en internet que hay mucho tema al respecto.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 30/11/2012, 08:25
 
Fecha de Ingreso: marzo-2011
Mensajes: 58
Antigüedad: 13 años
Puntos: 0
Respuesta: Como evitar una inyección sql?

Cita:
Iniciado por abimaelrc Ver Mensaje
Ya se te ha indicado formas de lograr evitar inyección sql, si quieres saber más del tema te recomiendo una búsqueda en internet que hay mucho tema al respecto.
Si, ya me indicaron las formas de evitar la inyeccion sql, pero no se si me entendieron, como se que estan funcionando correctamente, si en el localhost aparentemente mi sistema esta bien, y quiero "inyectarme" yo mismo, pero no puedo!
  #13 (permalink)  
Antiguo 30/11/2012, 09:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Como evitar una inyección sql?

Esta es una linda funcion para limpiar los caracteres malos:

Código PHP:
Ver original
  1. function clean($str)
  2.         {  
  3.             if(get_magic_quotes_gpc())
  4.             {
  5.                 $str = stripslashes($str);
  6.             }
  7.        
  8.             $str = mysql_real_escape_string($str);
  9.             return $str;
  10.         }

Asi es como la usas:

Código PHP:
Ver original
  1. $valor = clean($_REQUEST["valor"]);

Saludos!
Gustav.

Etiquetas: inyección, sql
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 14:30.