Foros del Web » Programando para Internet » PHP »

Protegerte de Inyeccion SQL

Estas en el tema de Protegerte de Inyeccion SQL en el foro de PHP en Foros del Web. Hola a todos para protegerte de la inyeccion SQL es suficiente la funcion mysql_real_escape_string o necesitas algo mas? Saludos y gracias Lophophora...
  #1 (permalink)  
Antiguo 19/05/2008, 16:05
Avatar de Lophophora  
Fecha de Ingreso: mayo-2005
Mensajes: 366
Antigüedad: 19 años
Puntos: 0
Protegerte de Inyeccion SQL

Hola a todos

para protegerte de la inyeccion SQL es suficiente la funcion mysql_real_escape_string o necesitas algo mas?

Saludos y gracias

Lophophora
__________________
P.L.U.R.
  #2 (permalink)  
Antiguo 19/05/2008, 16:27
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protegerte de Inyeccion SQL

Addslashes, si no tienes activada magic_quotes. Menos mal que en PHP6 se elimina esa directiva y se aplican siempre las comillas. Aquí tienes más consejos:

http://es.php.net/manual/es/security...-injection.php

Suerte!
  #3 (permalink)  
Antiguo 19/05/2008, 17:00
Avatar de Lophophora  
Fecha de Ingreso: mayo-2005
Mensajes: 366
Antigüedad: 19 años
Puntos: 0
Respuesta: Protegerte de Inyeccion SQL

esto es lo que te refieres?
Código PHP:
if (get_magic_quotes_gpc()) {$name stripslashes($name);}
else{
$name=  addslashes($name);}
$name mysql_real_escape_string($name);
mysql_query("SELECT * FROM users WHERE name='$name'"); 

Saludos

Lophophora
__________________
P.L.U.R.
  #4 (permalink)  
Antiguo 19/05/2008, 18:53
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Protegerte de Inyeccion SQL

tengo una duda yo utilizo este codigo para mis paginas en donde controlo los accesos

Código PHP:
<?php
include "includes/conectar.php";   //conexion a base de datos. 

function limpiaCadena ($cadena)
{
if (!
get_magic_quotes_gpc())
$cadena=mysql_real_escape_string($cadena);
return 
$cadena;


$con sha1($_POST[contrasena]); // encriptamos la contraseña
/* ¿El usuario existe? */
$busca_usuario=mysql_query("SELECT * FROM usuarios"
." WHERE USER='$_POST[usuario]'"
." AND PASSWORD = '$con'");
//comparamos los parametros....
//si el usuario es igual al que ingresamos
//y si la contraseña encriptada es la misma
//que esta en la base de datos encriptada igualmente....

if(mysql_num_rows($busca_usuario)==1// Los datos son validos
{
/* Crear la sesion y sus variables ... */
/* Redireccionar */
session_start(); // Definimos la sesion para aplicarle seguridad a nuestras paginas internas...
$_SESSION['usuario_activado']=limpiaCadena($_POST['usuario']);
$_SESSION["usuarioincorrecto"]= "Yes";
    
header ("Location: site/index.php");
}
else 
// Acceso invalido
{
//si es invalido guardo ip y fecha para bloquear numero max de accesos....
$ip $_SERVER[REMOTE_ADDR];
$fecha date("Y-m-d");
                
         
mysql_query ("INSERT INTO flood_login"
                
." (ip, fecha)"
                
." Values"
                
." ('$ip', '$fecha')") or die ("Error ".mysql_error());
                
header("Location: index.php?errorpagina=ok");
}
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
ahora mi pregunta es cuando hago mi funcion limpiaCadena seria mejor aplicarla antes de modo

que en la consulta valla limpia?? :/ no se me entro la duda al ver esto y al tratar de aplicarle lo de las barritas

o sea hacer

Código PHP:
//declarar una variable $usuario_activate limpiar la cadena
$usuario_activate limpiaCadena($_POST['usuario']);
$con sha1($_POST[contrasena]); // contraseña
/* ¿El usuario existe? */
$busca_usuario=mysql_query("SELECT * FROM usuarios"
//aqui aplicar la consulta con la cadena limpia????
." WHERE USER='$usuario_activate'"
." AND PASSWORD = '$con' ");

if(
mysql_num_rows($busca_usuario)==1// Los datos son validos
{
/* Crear la sesion y sus variables ... */
/* Redireccionar */
session_start(); // Definimos la sesion para aplicarle seguridad a nuestras paginas internas...
//aqui ademas definir la session_name??? creo que es lo mismo no :/ 
$_SESSION['usuario_activado']=$usuario_activate
si encuentran como queda mejor y que se le puede agregar se los agradeceria :D

por cierto añado encontre hace un tiempo esta web pero no la he ocupado nunca se supone pone una especie de firewall bueno uds. me diran que tal

http://code.google.com/p/inspekt/
__________________
Gokuh Salvo al mundo. PUNTO!!!!

Última edición por kaninox; 19/05/2008 a las 19:16
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 16:21.