Autor Tema: Implementar cambio de contraseña  (Leído 2850 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jorozco

  • Hero Member
  • *****
  • Mensajes: 880
    • Ver Perfil
    • Email
  • Institución: Universidad Catòlica de Manizales
  • Nombre y apellido: Jhon Jairo Orozco D.
  • Sistema: Toba
Implementar cambio de contraseña
« on: Febrero 10, 2010, 10:59:32 am »
En el foro se ve mucho el requerimiento, para que el usuario, pueda recordar o cambiar su contraseña, sería bueno implementarlo de de una vez.


richard

  • Moderador Global
  • *****
  • Mensajes: 3005
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re: Implementar cambio de contraseña
« Respuesta #1 on: Febrero 10, 2010, 02:04:32 pm »

Paciencia amigo XD... en la version 1.5 se incluye un metodo para que el usuario pueda cambiar su clave en caso de haberla olvidado.

Saludos
Richard
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

jlmarino

  • Visitante
Re: Implementar cambio de contraseña
« Respuesta #2 on: Febrero 12, 2010, 03:29:34 pm »
Igualmente Jhon para hacer el cambio de contraseña podrías implementar una operación para hacer la misma.
No es muy dificil, solo tendrías que correr el update sobre la base de toba.
Acá te muestro un ejemplo que hice en un proyecto:

Código: [Seleccionar]
<?php
class ci_cambio_contrasenia extends toba_ci
{  
    
//-----------------------------------------------------------------------------------
    //---- DEPENDENCIAS -----------------------------------------------------------------
    //-----------------------------------------------------------------------------------
  
    //---- formulario -------------------------------------------------------------------
  
    function evt__formulario__modificacion($datos)
    {       
        $usuario toba::usuario()->get_id();
    if (!(toba_usuario_basico::autenticar($usuario$datos['clave_actual'])))
    {
           toba::notificacion()->agregar("La clave actual ingresada no es la correcta.");
         return;
       }   
       if($datos['nueva_clave'] != $datos['repeticion_clave'])
            $this->informar_msg("La contraseña nueva y la confirmación deben ser iguales");
        else
        {           
         $sql "UPDATE
                     apex_usuario
                 SET
                   clave = '
$datos[nueva_clave]'                   
                 WHERE
                   usuario = '
$usuario';
             "
;
      toba_instancia::instancia()->get_db()->ejecutar($sql);
      $this->pantalla()->set_descripcion('La clave fue actualizada correctamente.<br>');       
        }       
           
    }

  
?>

Está operación tiene un ci con un formulario.
Adjunto imagen de formulario.

Saludos.

jorozco

  • Hero Member
  • *****
  • Mensajes: 880
    • Ver Perfil
    • Email
  • Institución: Universidad Catòlica de Manizales
  • Nombre y apellido: Jhon Jairo Orozco D.
  • Sistema: Toba
Re: Implementar cambio de contraseña
« Respuesta #3 on: Febrero 16, 2010, 12:30:47 pm »
OK, funciono tal como lo presentas.

Te agradezco

Gustavo Pilla

  • Moderador Global
  • *****
  • Mensajes: 149
    • Ver Perfil
    • Email
  • Institución: UNAJ
  • Nombre y apellido: Gustavo Alejandro Pilla
  • Sistema: SIU-*
Re: Implementar cambio de contraseña
« Respuesta #4 on: Abril 05, 2010, 08:58:57 pm »
Hola,

En la UNQ, hicimos una pantalla que hacia lo mismo, y fue implementado en el SIU-Pilaga, pero de una manera mas engorrosa, sin utilizar algunas herramientas que da el toba, que aca se muestran, el unico detalle que le veo a el codigo que ustedes muestran, es que no encriptan la clave antes de guardarla. Me tome un minuto y convine los dos codigos (y tambien mejore un poco mi codigo usando mas funciones toba)

Código: (php) [Seleccionar]

<?php 
class cambiar_clave extends toba_ci
{
//-----------------------------------------------------------------------------------
//---- DEPENDENCIAS -----------------------------------------------------------------
//-----------------------------------------------------------------------------------

//---- formulario -------------------------------------------------------------------

function evt__formulario__modificacion($datos)
{
$id_usuario toba::usuario()->get_id();
if (!(toba_usuario_basico::autenticar($usuario$datos['clave_vieja']))) {
toba::notificacion()->agregar("La clave actual ingresada no es la correcta.");
return;
}

if($datos['clave_nueva'] == $datos['clave_nueva_confirmar']) {
$datos_usuario toba::instancia()->get_info_autenticacion($id_usuario);
$algoritmo $datos_usuario['autentificacion'];
$clave $datos['clave_nueva'];
if ($algoritmo != 'plano')  { 
if ($algoritmo == 'md5') {
$clave hash($algoritmo$clave);
} else {
$clave encriptar_con_sal($clave$algoritmo$datos_usuario['clave']);
}
}
$sql "UPDATE apex_usuario SET clave = '".$clave."' WHERE usuario = '$id_usuario'";
//toba::db('toba')->ejecutar($sql);
toba_instancia::instancia()->get_db()->ejecutar($sql);
$this->pantalla()->set_descripcion('La clave fue actualizada correctamente.<br>'); 
}else{
toba::notificacion()->agregar("La clave y la confirmacion de la clave no son iguales!");
}
}

//El formato del retorno debe ser array('id_ef' => $valor, ...)
function conf__formulario($componente)
{
$datos = array( 'usuario' => toba::usuario()->get_id(),
'nombre' => toba::usuario()->get_nombre() );
return $datos;
}


}

?>



Espero que les sirva a ustedes, mientras tanto... voy a volver a enviar este codigo al proyecto SIU-Pilaga

richard

  • Moderador Global
  • *****
  • Mensajes: 3005
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re: Implementar cambio de contraseña
« Respuesta #5 on: Abril 06, 2010, 01:11:58 pm »
Hola Gustavo,

gracias por tu aporte, te hago 1 observacion:

- Ya que estamos hablando de manejar las claves de manera propia creo que seria mas que recomendable descartar como posibilidades el guardar los pwd en texto plano y con un simple hash, en toba ambos metodos persisten al solo hecho de ofrecer compatibilidad hacia atras, pero en la creacion de las nuevas cuentas la sugerencia es siempre hacia el uso de la encriptacion con salt, que de hecho tampoco es a prueba de todo... pero ciertamente mas seguro que un md5 pelado.

Creo que el problema que se presentaba era atacar aquellos cambios de clave en los que el usuario olvido la clave previa, en esos casos se dificulta bastante determinar que el pedido de cambio viene de la persona correcta. En tu caso supongo que dicha persona deberia acercarse a la dependencia de la universidad para poder efectuar el cambio, de otro modo no podra cambiar su clave.

Lo mas mejor (diria un paisano) seria presentarle al usuario un desafio contra el cual 'autenticarlo'... el problema seria la efectividad del metodo ya que normalmente la gente usa cosas demasiado cotidianas para no tener que andar recordando y eso pone el mismo metodo en riesgo ya que son respuestas intuibles. Esto tambien implica hacer mas engorroso el proceso de alta del usuario en toba, que hoy tiene una vision mas minimalista en cuanto a los datos, de todas formas es algo mas que interesante como extension de los proyectos... sobre todo de aquellos que manejan los usuarios de forma propia.

En definitiva, muy buena tu observacion sobre la seguridad faltante en el codigo anterior y el agregado del mismo al proceso. Ya que tu intencion es enviarlo para la gente de Pilaga, fijate si antes le podes agregar lo que te comentaba... seguro van a estar mas que interesados de tener algo asi.

Saludos
Richard


Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Alejandro Delú

  • Moderador Global
  • *****
  • Mensajes: 8387
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Alejandro Delú
  • Sistema: Guaraní
Re: Implementar cambio de contraseña
« Respuesta #6 on: Febrero 17, 2011, 04:54:14 pm »
Richard, adjunto una presentacion que realizaron los técnicos de Guaraní de la UNLP y como ellos implementaron el recupero de la clave en su sistema de preinscripcion a carreras.
Hace una comparación de como lo hacen algunos de los sitios mas grandes (en cantidad de usuarios) respecto del olvido de la contraseña. Espero les sea de utilidad.