Foros del Web » Programando para Internet » PHP »

Seguridad en login

Estas en el tema de Seguridad en login en el foro de PHP en Foros del Web. Hola a todos, les comento que estoy tratando de darle seguridad al login de un trabajo, hice unos arreglos pero me gustaría discutir que esta ...
  #1 (permalink)  
Antiguo 26/11/2012, 23:53
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Exclamación Seguridad en login

Hola a todos, les comento que estoy tratando de darle seguridad al login de un trabajo, hice unos arreglos pero me gustaría discutir que esta bien y que esta mal, lo comparto y espero me ayuden.

login.php
Código PHP:
<?php
    $ogin 
mysql_real_escape_string(strip_tags($_POST['login']));
    
$clave mysql_real_escape_string(strip_tags($_POST['clave']));
    
    include(
"conn.php");
    
    
$consulta    "SELECT * FROM users WHERE nik = '$u_login' and pass = '$u_clave'";
    
$resultado    mysql_query($consulta);
    
$chequeo    mysql_num_rows($resultado);
    if(
$chequeo!=1){
        
session_unset();
  
session_destroy();
        
$parametros_cookies session_get_cookie_params();
  
setcookie(session_name(),0,1,$parametros_cookies["path"]);
        
mysql_close();
        
header("location:index.php?error=1");
    }else{
        
        
session_start();
        
$_SESSION[login] = "ok";
        
$fila mysql_fetch_array($resultado);
        
$_SESSION[nik] = $fila[nik];
        
mysql_close();
        
header("location:home.php");
    }
?>
logout.php
Código PHP:
<?php
    session_start
(); 
    
$u_nombre $_SESSION['nik'];
    
session_unset();
    
session_destroy();
    
header("refresh:0; url=index.php");
?>
__________________
Zreep
  #2 (permalink)  
Antiguo 27/11/2012, 03:24
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Respuesta: Seguridad en login

Yo haría lo siguiente:

1- Ver si existe un usuario con dicho nombre.
2- Obtener de la base de datos la clave de dicho usuario.
3- Comparar la clave que viene al hacer login con la recuperada en la base de datos.
4a- Si son iguales pues todo lo que implique hacer login.
4b- Si no son iguales pues redirigirlo, etc.

Eso es lo que yo haría.
  #3 (permalink)  
Antiguo 27/11/2012, 04:25
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seguridad en login

Si hablamos de seguridad mysql esta deprecada , usa mysqli o pdo. Las sessiones las estas mandando en texto plano yo las codificaria , tu contraseña no esta encriptada en la bd.

Última edición por webankenovi; 27/11/2012 a las 04:37
  #4 (permalink)  
Antiguo 03/12/2012, 19:59
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Seguridad en login

Hola webankenovi y gracias. No se como codificar sessiones y la contraseña esta escrita en la base de datos. No se a que te referias. Pero gracias por el tiempo, me interesa aprender y resolver y compartir un codigo bien hecho.
__________________
Zreep
  #5 (permalink)  
Antiguo 03/12/2012, 20:02
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Seguridad en login

Espero que la gente que copio en código aporte su opinión y no copien algo que no saben si esta bien. El fin de compartir es el debate y llegar a hacer algo bien para todos. No tengo drama de compartirlo, pero seria bueno que nos ayudemos.

Gracias
__________________
Zreep
  #6 (permalink)  
Antiguo 04/12/2012, 09:38
 
Fecha de Ingreso: enero-2012
Ubicación: Mexico Df
Mensajes: 95
Antigüedad: 12 años, 3 meses
Puntos: 6
Respuesta: Seguridad en login

podrías usar codificación base64 o hash o alguna

Saludos
  #7 (permalink)  
Antiguo 04/12/2012, 09:46
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Seguridad en login

Yo estoy con webankenovi seria mejor encriptar la contraseña. Puedes usar lo que te ha dicho cesar_viridi o también md5.

Al registrarse haces un:
Código PHP:
Ver original
  1. $contraseña_encriptada=md5($contraseña);
y guardas la encriptada en tu base de datos y luego al hacer login también la encriptas y las compruebas que sean iguales.

Saludos
  #8 (permalink)  
Antiguo 04/12/2012, 10:36
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seguridad en login

Hola de nuevo , makh16 te ha explicado brevemente como deberias de encriptar tu contraseña en la base de datos .

1 - en el registro se encripta y se guarda en la bd ya encriptada
2- en el login verificamos el valor de post clave con el mismo algoritmo de encriptacion usado en el registro y verificamos que sea igual al de la bd

yo no te recomiendo md5 por que ya esta muy explotado , aqui te dejo algunos ejemplo de encriptacion del manual de php

http://php.net/manual/es/function.hash.php - function hash
http://es.php.net/manual/es/function.crypt.php - function crypt
http://es.php.net/manual/es/function.mcrypt-encrypt.php - function mcrypt-encrypt

pero no uses md5 usa alguno mas fuerte.

las sessiones las puedes codificar con base64_encode y decodificar con base64_decode por ejemplo

mcrypt tiene una libreria de funciones muy buenas para encriptar desencriptar datos te lo recomiendo para encriptar las sessiones , ademas este mismo metodo yo lo usaria para codificar toda la bd y que ningun dato importante como nombres emails etc... queden en texto plano protegiendo asi a tus usuarios .

http://es.php.net/manual/es/book.mcrypt.php - MCRYPT


tambien te recomiendo cambiar el algoritmo usado para el id de session por ejemplo sha-512 o whirlpool

http://es.php.net/manual/es/session.....hash-function

debes modificarlo en tiempo de ejecucion

ini_set('session.hash_function','whirlpool');

saludos cualquier duda aqui estamos

Última edición por webankenovi; 04/12/2012 a las 11:01
  #9 (permalink)  
Antiguo 10/12/2012, 19:27
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Seguridad en login

webankenovi muchas gracias y gracias a todos, voy a modificar en codigo y cuando este listo lo comparto...

Pero primero voy a estudias asi hago las cosas bien. Gracias....
__________________
Zreep
  #10 (permalink)  
Antiguo 10/12/2012, 23:18
Avatar de web2013  
Fecha de Ingreso: diciembre-2012
Ubicación: Peru
Mensajes: 19
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Seguridad en login

Hola zreep

Te sugiero usar php 5.3 orientado a objetos (clases).
Y para guardar contraseñas creas una función personalizada que te permita codificar y decodificar, pues aveces necesitas recuperar tu misma contraseña y sera complicado de otro modo (no uses base_64 porque es muy conocido).
  #11 (permalink)  
Antiguo 11/12/2012, 10:28
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seguridad en login

Cita:
Iniciado por web2013 Ver Mensaje
Hola zreep

Te sugiero usar php 5.3 orientado a objetos (clases).
Y para guardar contraseñas creas una función personalizada que te permita codificar y decodificar, pues aveces necesitas recuperar tu misma contraseña y sera complicado de otro modo (no uses base_64 porque es muy conocido).
Efectivamente no uses base64 solo te lo puse como ejemplo para que lo probaras , usa crypt o una funcion personalizada como te ha dicho web2013 .

Respecto a lo de codificar la contraseña para su recuperacion no lo veo conveniente , el proceso suele ser la pass hasheada de una sola via y para recuperarla se envia un email con una pass generada aleatoriamente y luego el usuario debera modificarla por la pass nueva

saludosss

Etiquetas: login, mysql, seguridad
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 03:47.