Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Inyeccion SQL

Estas en el tema de Inyeccion SQL en el foro de PHP en Foros del Web. Hola gente, una pregunta muy basica, es cierto que para evitar una inyeccion SQL es colocar el @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original mysqli_real_escape_string o ...
  #1 (permalink)  
Antiguo 03/05/2016, 13:05
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Inyeccion SQL

Hola gente, una pregunta muy basica, es cierto que para evitar una inyeccion SQL es colocar el o que mas puedo añadirle?
Gracias
  #2 (permalink)  
Antiguo 03/05/2016, 14:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Inyeccion SQL

Pues sólo necesitas eso, ¿por qué no consultaste el manual?

No hacía falta abrir un tema para esto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/05/2016, 14:45
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Inyeccion SQL

Entonces por que en el manual tambien especifican esto O Esto o esto Tambien miro el manual, solo que la unica que empleo es y si hace falta abrir un tema por que no?
  #4 (permalink)  
Antiguo 03/05/2016, 19:08
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Inyeccion SQL

Para mi lo mejor que puedes hacer es validar primero los datos.

Esto quiere decir que si esperas un numero, compruebes que sea un numero, que si esperas una cadena de a-Z sin simbolos estraños, compruebes que es así, ecetera...

Una vez validados todos los datos que los escapes con las funciones indicadas que provee el lenguaje.

Igualmente que establezcas la codificacion de caracteres de la conexion con la base de datos de forma adecuada y explicita para que tanto la base de datos como php esten en concordancia, piensa que muchas de las funciones de escape como mysqli_real_escape_string() realizan su funcion en base a la codificacion establecida en la conexion que se le pasa.

Al crear usuarios para la conexion con la base de datos otorgale solo los privilegios necesarios, no hay necesidad de permitirle opciones que no necesita de antemano, siempre hay tiempo de ampliar los privilegios si es que es necesario.

Evita que los errores se muestren, tanto de php como de la base de datos, los errores solo deberian estar activos en la fase de desarrollo, nunca en produccion.

Si has leido el manual y los enlaces que pones mas o menos vienen a decir eso.

Tambien puedes utilizar sentencias preparadas como indica en el manual.
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 04/05/2016, 07:03
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Inyeccion SQL

Hola.

Primero que todo agradezco tu respuesta, me gusta que has profundizado en el tema para y no solo te has fijado en lo superficial que era la pregunta.

Bueno al tema, mira los de lo de validar el campo es algo raro eh estado practicando con eso pero aun no entiendo a gran escala que hace...

Oye y a que te quieres referir con esta parte "Igualmente que establezcas la codificacion de caracteres de la conexion con la base de datos de forma adecuada y explicita para que tanto la base de datos como php esten en concordancia, piensa que muchas de las funciones de escape como mysqli_real_escape_string() realizan su funcion en base a la codificacion establecida en la conexion que se le pasa."

Y una ultima cosa, he tratado de hacerme una INYECCION SQL, y me sale este mensaje .. Eso quiere decir que estoy siendo vulnerable o que "Fatal error: Uncaught PDOException: SQLSTATE[42000]: " Gracias por la ayuda.
  #6 (permalink)  
Antiguo 04/05/2016, 07:42
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Inyeccion SQL

Cita:
Bueno al tema, mira los de lo de validar el campo es algo raro eh estado practicando con eso pero aun no entiendo a gran escala que hace...
Validar los datos que el usuario ingresa no es algo raro y debería ser el primer paso.
Esto no es más que si por ejemplo tienes un campo para que usuario escriba su teléfono, compruebes que se ha introducido un teléfono válido.
Si tienes un campo nombre que sea un nombre válido, por ejemplo un nombre hispano no debe contener comillas, números, símbolos matemáticos, guiones, etcétera... solo los caracteres del del alfabeto por ejemplo.
Si se introduce algún dato no válido detenemos el Script y retornamos el error si corresponde. Impidiendo ejecutar el resto del código o la sentencia en cuestión.

Cita:
Oye y a que te quieres referir con esta parte "Igualmente que establezcas la codificacion de caracteres de la conexion con la base de datos de forma adecuada y explicita para que tanto la base de datos como php esten en concordancia, piensa que muchas de las funciones de escape como mysqli_real_escape_string() realizan su funcion en base a la codificacion establecida en la conexion que se le pasa."
Esto se refiere a que si la base de datos es UTF8 pero la conexión desde php se establece en latin1 por ejemplo las funciones de escape como mysqli_real_escape_string y demás van a escapar los caracteres para latin1 en lugar de UTF8.

Puedes ver más información aquí

Cita:
Y una ultima cosa, he tratado de hacerme una INYECCION SQL, y me sale este mensaje .. Eso quiere decir que estoy siendo vulnerable o que "Fatal error: Uncaught PDOException: SQLSTATE[42000]: " Gracias por la ayuda.
Lo más probable es que si, si haces una injeccion y obtienes un error de sintaxis algo no estas haciendo bien.
__________________
Unset($vida['malRollo']);
  #7 (permalink)  
Antiguo 04/05/2016, 08:07
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Inyeccion SQL

Excelente, muy buenas tus respuesta.

Las validaciones ya las he hecho,y me han funcionado correctamente. Pero seguramente esto entrara en conflicto por que mis bases de datos estan en *latin1_swedish_ci* y los datos suben como "utf8_decode" y no encuentro esa opcion en ningun lado.

Rayos :/ eso es malo si aun se puede hacer una inyeccion SQL, aunque cuando ejecuto el codigo no me muestra errores, solo lo hace cuando se hace la inyeccion ...

A pesar que las consultas e inserciones de datos las tengo con el .

Gracias!.

Etiquetas: mysql, 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 17:30.