Foros del Web » Programando para Internet » PHP »

pequeño problema con autentificacion de usuarios

Estas en el tema de pequeño problema con autentificacion de usuarios en el foro de PHP en Foros del Web. bueno les comento... hice un sistema de usuarios que anda bien pero todavia tiene 1 o 2 fallas qe no se como solucionar Script: [php] ...
  #1 (permalink)  
Antiguo 29/10/2006, 15:45
 
Fecha de Ingreso: junio-2006
Mensajes: 62
Antigüedad: 17 años, 10 meses
Puntos: 0
Pregunta pequeño problema con autentificacion de usuarios

bueno les comento...

hice un sistema de usuarios que anda bien pero todavia tiene 1 o 2 fallas qe no se como solucionar

Script:
[php]

<?php require("conectar.php") ?>
<html>
<head>
</head>
<body>
<center>
<br><br><br><br>
<?php
$sql = "SELECT usuario,password FROM usuarios WHERE usuario='$_POST[user]'";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);
IF ($row[password] == $_POST[pass])
{
print(" <table border=1 width=360 cellpadding='0' cellspacing='0' bordercolor='969696' height='120'>
<tr>
<td height=20 bgcolor='gray'>
<tr>
<td bgcolor='f1f1f1'> <center>
Los datos son correctos, haga click <a href=admin.php>aqui</a> para ir al indice de administracion
</td>
</tr>
</td>
</tr>
</table>");
}
ELSE if ($row[password] != $_POST[pass])
{
print(" <table border=1 width=360 cellpadding='0' cellspacing='0' bordercolor='969696' height='120'>
<tr>
<td height=20 bgcolor='gray'>
<tr>
<td bgcolor='f1f1f1'> <center>
Verifique los datos Ingresados e intentelo nuevamente <br>
pulse <a href='login.php'> aqui </a> para volver a intentarlo
</td>
</tr>
</td>
</tr>
</table>");
}


; ?>


</body>
</html>

[php]

este script es el correspondiente al autentificador precisamente

bueno la cuestion es que el login no te deja pasar si pones cualquier contraseña pero si dejas el usuario en blanco o pones cualquier usuario sin contraseña te deja pasar... no se como solucionarlo...

si alguien me ayuda se agradece :D

Última edición por Cluster; 30/10/2006 a las 06:16
  #2 (permalink)  
Antiguo 29/10/2006, 21:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Cita:
$sql = "SELECT usuario,password FROM usuarios WHERE usuario='$_POST[user]'";
¡Jamás hagas algo así sin validar el contenido del campo!
Imaginate que en el campo "user" se me ocurra escribir algo como:
' OR 1=1

¿logras ver cómo quedaría la consulta?
"SELECT usuario,password FROM usuarios WHERE usuario='' OR 1=1"

Es decir, siempre devuelve resultados.

Por otro lado, creo que el problema del usuario vacío o de cualquiera es el siguiente:
Como no encuentra resultados, $row[password] no está definida. Se puede asumir entonces que está vacía. Y si $_POST[pass] está vacía, pues
vacía == vacía
y por eso entra en el if, en vez de saltar al else.

Soluciones:
1.- comprobá que haya un resultado (y solo 1)
2.- NO incluyas en la consulta SQL el valor que te pasan del formulario. Antes de eso revisalo con una expresión regular ( ereg() ), en las faq podés encontrar algo sobre eso. si no me equivoco lo que necesitás es algo como:

ereg("[^a-zA-Z0-9]", $_POST['user'])

que devuelve verdadero si encuentra un caracter que no sea número o letra.


Saludos.
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 20:50.