Avatar Image
Colega ;)
Colega ;)

¿Cómo puedo proteger una consulta de base de datos en PHP de un SQL Injection?

El código funciona del siguiente modo, recojo un dato por método $_GET y lo meto a la base de datos.

He probado con el típico mysql_real_escape_string pero me salta error. Lo cual significa que, o no sé usarlo, o en miarroba no está permitido. Simplemente había puesto $var=mysql_real_escape_string($_GET['var']);

¿Ideas?

Gracias de antemano.

Avatar Image
@man / @woman
@man / @woman

Aunque el 2do parámetro es opcional, nada cuesta probar:

string mysql_real_escape_string ( string $cadena_no_escapada, resource $id_enlace );

Nota: Es necesaria una conexión MySQL antes de usar mysql_real_escape_string().

- - - - - - - - - -
Nota: copiado de manual de MySql

Un ejemplo de un ataque de inyección SQL

<?php
// Consultar la base de datos para verificar si hay una coincidencia de usuario
$consulta = "SELECT * FROM usuarios WHERE usuario='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($consulta);

// No revisamos $_POST['password'], ¡podría ser cualquier cosa que el usuario quiera! Por ejemplo:
// $_POST['username'] = 'aidan';
// $_POST['password'] = "' OR ''='";

// Esto quiere decir que la consulta enviada a MySQL sería:
echo $consulta;
?>

La consulta enviada a MySQL: SELECT * FROM usuarios WHERE usuario='aidan' AND password='' OR ''=''

Esto permitiría que cualquiera iniciara una sesión sin una contraseña válida.

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Habria que ver el codigo y aunque el segundo parametro es opcional, como bien dices gestion, seria recomendable probarlo a ver.

Por cierto que tipo de error te salta?. Saludos!.

Avatar Image
Colega ;)
Colega ;)
Escrito originalmente por GestionXls

Nota: Es necesaria una conexión MySQL antes de usar mysql_real_escape_string().

He ahí el fallo. Lo había programado todo bien, pero la conexión de la base de datos era posterior a usar la recogida de las variables. He puesto la conexión antes y todo perfecto. Muchas gracias GestionXls.

aerialss88, a ti también por la intención. Siento no haber puesto el error antes, pero salí con cierta prisa cuando publiqué el tema y ahora ya está solucionado.

Un Saludo

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
No se han encontrado temas similares