elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 13:04  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  Ayuda con sistema login
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con sistema login  (Leído 486 veces)
pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Ayuda con sistema login
« en: 27 Agosto 2008, 19:47 »

hola a todos
estoy creando un sistema de login para mi web pero veo que me estoy liando y nose de que forma hacerlo seguro, esto es lo que llevo hecho:

esta es la tabla SQL:

Código
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
username VARCHAR(30) NOT NULL,
password VARCHAR(20) NOT NULL);
 
-- USERS --
INSERT INTO `users` VALUES (1, 'admin', '827ccb0eea8a706c4c34a16891f84e7b');


Aquí el code php (login.php):

Código
<?php
 
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '12345';
$db = 'web';
 
$conectar = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db,$conectar);
 
if (isset($_SESSION['admin_username'])){
echo "Ya estás autentificado";
       header("Location: admin.php");
}
 
if ($_POST['username']) {
$username = $_POST['username'];
$password = $_POST['password'];
 
 
if ($password==NULL) {
echo "La password no fue enviada";
}
 
else{
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != md5($password)) {
echo "Login incorrecto";
}
 
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["admin_username"] = $row['username'];
echo "Has sido logueado correctamente ".$_SESSION['admin_username']." y puedes acceder al admin.php.";
}
}
?>
 
 
<form action='login.php' method='POST'>
<table style='border:1px solid #000000;'>
<tr>
<td align='right'>
Nombre de usuario: <input type='text' size='15' maxlength='25' name='username'>
</td>
</tr>
<tr>
<td align='right'>
Password: <input type='password' size='15' maxlength='25' name='password'>
</td>
</tr>
<tr>
<td align='center'>
<input type="submit" value="Login">
</td>
</tr>
<tr>
<td align='center'>
</td>
</tr>
</table>
</form>

Creo que me estoy complicando bastante para lo que quiero hacer, tambien hay un par de SQL Injections por ahí... ¿Como lo podría mejorar? ¿Qué cambiarian del código? ¿Cómo lo puedo hacer más seguro?

cheers!


En línea
Ertai
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.026


Ralph Wiggum


Ver Perfil
Re: Ayuda con sistema login
« Respuesta #1 en: 27 Agosto 2008, 21:25 »

Hola,

Si, hay cosas que puedes mejorar.

Primero codifica en md5 el password y luego haz la consulta. Sabrás si existe mirando en numero de filas devueltas por MySQL. Además no hace falta que hagas dos consultas, lo puedes hacer en una, busca el usuario introducido y su contraseña en md5.

Comprueba que el usuario tenga los caracteres A-Za-z0-9 o como desees antes de hacer la SQL y con el md5 del password ya no tendras problemas de inyecciones.

Otra cosa: tu campo en BDD de password es unn varchar de 20, y md5 esta codificado en 32, así que deberías cambiarlo.

Y mejor no uses el NULL para comparaciones a no ser que sepas que estas haciendo, pues PHP trata las variables muy diferente que en C o C++, usa mejor funciones del estilo empty(), isset(), etc...

Un saludo!


En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un un login java
Java
dato000 0 1,203 Último mensaje 24 Mayo 2011, 21:42
por dato000
Sistema de login en el que NO se pueda forzar el logueo por URL
PHP
‭lipman 6 1,452 Último mensaje 23 Junio 2011, 15:56
por moyo18
Ayuda con un Login !!
.NET
Audioslave™ 11 1,133 Último mensaje 21 Agosto 2011, 21:46
por Audioslave™
Sistema de login.
PHP
lnvisible 4 509 Último mensaje 1 Diciembre 2011, 04:33
por drvy | BSM
[java] [python] Sistema de login.
Programación General
lnvisible 5 965 Último mensaje 22 Enero 2012, 22:45
por lnvisible
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines