Foros del Web » Programando para Internet » PHP »

consulta sobre inyeccion :/

Estas en el tema de consulta sobre inyeccion :/ en el foro de PHP en Foros del Web. 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  ( ...
  #1 (permalink)  
Antiguo 23/05/2008, 01:27
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
consulta sobre inyeccion :/

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 pues

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

saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #2 (permalink)  
Antiguo 24/08/2008, 23:21
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: consulta sobre inyeccion :/

Pues en realidad deberías de aplicarle la función limpiaCadena a los dos parámetros del post, tanto al usuario como a la contraseña ANTES de ejecutar la consulta de selección en la base de datos.

En el campo contraseña también se puede escribir código malicioso por más que uno solo vea los asteriscos ;)

Salu2
  #3 (permalink)  
Antiguo 10/11/2008, 23:24
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: consulta sobre inyeccion :/

algo tarde pero no le veo fin pasar un limpiador de cadena a la contraseña ya que llega codificada con sha1 y aunque tenga cosas extrañas estas las codifica o encripta como se dice... :)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 05:05.