Foros del Web » Programando para Internet » PHP »

Aunque coloque la contraseña correctamente me vuelve a salir una y otra vez

Estas en el tema de Aunque coloque la contraseña correctamente me vuelve a salir una y otra vez en el foro de PHP en Foros del Web. Hola a todos, ahora mismo tengo un problema con una protección en php mediante pass_protect . El problema que tengo es que por mas que ...
  #1 (permalink)  
Antiguo 23/09/2009, 09:45
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Aunque coloque la contraseña correctamente me vuelve a salir una y otra vez

Hola a todos, ahora mismo tengo un problema con una protección en php mediante pass_protect.

El problema que tengo es que por mas que introdusca el user y la pass pues me sigue saliendo la ventana pidiendo el user y el pass, los codigos que tengo son estos:

Código PHP:
<?php
require ("../includes/proteccion.php") ;
?>
<?php
require ("../includes/login.php") ;
?>
// Aquí llamo al codigo de "protección" y el de login, que permite la ventana //

proteccion.php:

Código PHP:
<?php
function pass_protect($name$pass$mensaje='Area solo para usuarios registrados'){
    
$files['.htaccess'] = array(
        
'AuthName "'.$mensaje.'" ',
        
'AuthType Basic ',
        
'AuthUserFile '.realpath('./').'/.htpasswd ',
        
//'AuthGroupFile /dev/null ',
        
'require valid-user '
    
);
    if(
is_array($name) && is_array($pass)){
        foreach(
$name as $k => $v){
            if( !empty(
$name[$k]) && !empty($pass[$k]) ){   $files['.htpasswd'][] = $name[$k].':'.crypt($pass[$k]);    }
        }
    } elseif(
is_array($name)){  foreach($name as $k => $v){   $files['.htpasswd'][] = $v.':'.crypt($pass);   }  
    } elseif(
is_array($pass)){  foreach($pass as $k => $v){   $files['.htpasswd'][] = $name.':'.crypt($v);   }  
    } else {                
$files['.htpasswd'][] = $name.':'.crypt($pass); 
    }
    foreach(
$files as $filename => $cont){
        
$cont   implode("\n"$cont);
        
$fp  fopen($filename'w+');
        
$read   fwrite($fp$contstrlen($cont));
        
fclose($fp);
    }
    return 
true;
}
?>
login.php:

Código PHP:
<?php
$name 
= array ('$$$$$''$$$$$') ;
$pass = array ('$$$$$''$$$$$') ;
$mensaje = array ('Esta zona es solo para administradores') ;
pass_protect ($name$pass) ;
?>
¿Qué fallo le veis?

Los users y las pass las puse así por que las he publicado aquí, pero son otras .

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #2 (permalink)  
Antiguo 25/09/2009, 12:05
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Bueno, ya se porque no me funciona, os explico, decidí meterme dentro del archivo .htpasswd y me sale mi user y el otro user pero con distintas contraseñas, es como si se hayan codificado o algo raro :S

Veamos, yo tengo esto:

Código php:
Ver original
  1. <?php
  2. $name = array ('ivi', 'demo') ;
  3. $pass = array ('ivi', 'demo') ;
  4. $mensaje = array ('Esta zona es solo para administradores') ;
  5. pass_protect ($name, $pass) ;
  6. ?>

Y en el .htpasswd aparece esto:

Código .htpasswd:
Ver original
  1. ivi:$1$B65.0L1.$txXimYmI78R9eY5Ke2Kg1/
  2. demo:$1$Hz0.EQ3.$rL.Ugc9WOue/lrb5h03ni.

Las contraseñas son lo que va despues del nombre y los dos puntos (:).

¿Cómo podría hacer para que las contraseñas se guarden como son? ¿Añadirle alguna codificación al .htpasswd?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #3 (permalink)  
Antiguo 25/09/2009, 12:27
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

No es que sea algo raro que se haya codificado, lo raro es que no lo hiciese cuando tu le haz mandado eso al script

Código:
crypt($pass)
http://us.php.net/manual/en/function.crypt.php

tienes que quitar eso para que no salga codificado, cosa que no te aconsejo, pero bueno... o usar el mismo método de encriptación antes de validar la contraseña que hayan introducido, para que así coincidan con el archivo.
  #4 (permalink)  
Antiguo 25/09/2009, 12:35
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

En serio quieres guardad las contrasenas sin encriptarlas? No lo recomiendo.
__________________
twitter: @imbuzu
  #5 (permalink)  
Antiguo 25/09/2009, 12:39
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Cita:
Iniciado por codig0 Ver Mensaje
No es que sea algo raro que se haya codificado, lo raro es que no lo hiciese cuando tu le haz mandado eso al script

Código:
crypt($pass)
http://us.php.net/manual/en/function.crypt.php

tienes que quitar eso para que no salga codificado, cosa que no te aconsejo, pero bueno... o usar el mismo método de encriptación antes de validar la contraseña que hayan introducido, para que así coincidan con el archivo.
Pero a ver, si no recomiendas que ponga eso, entonces que hago, pongo un TIP

Cita:
Meterse en el .htpasswd para verificar la contraseña de los administradores y pasarsela.
Sería algo raro :S.

Cita:
Iniciado por buzu Ver Mensaje
En serio quieres guardad las contrasenas sin encriptarlas? No lo recomiendo.
Entonces..., ¿qué hago? ¿hay alguna forma de mantenerlas encriptadas pero que lo que haya que poner sea lo que yo coloqué?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #6 (permalink)  
Antiguo 25/09/2009, 12:42
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Como ya te dije lo que no te recomiendo es dejarlas sin codificar... lo que tienes que hacer es al recoger los datos de el formulario con $_POST el usuario y la contraseña encriptarlas con el mismo método para que así coincidan, osea con crypt.
  #7 (permalink)  
Antiguo 25/09/2009, 12:46
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Veamos, me gustaría decir una cosa, yo no tengo formulario para crear administradores, para yo crear los administradores los agrego mediante aquel codigo que os enseñé antes, este:

Código php:
Ver original
  1. <?php
  2. $name = array ('ivi', 'demo') ;
  3. $pass = array ('ivi', 'demo') ;
  4. $mensaje = array ('Esta zona es solo para administradores') ;
  5. pass_protect ($name, $pass) ;
  6. ?>

Por lo que yo entiendo lo que tu me estás diciendo es que yo haga esto:

Código php:
Ver original
  1. <?php
  2. $name = array ('ivi', 'demo') ;
  3. $pass = array ('ivi', 'demo') ;
  4. $mensaje = array ('Esta zona es solo para administradores') ;
  5. crypt ($pass) ;
  6. pass_protect ($name, $pass) ;
  7. ?>

¿Es eso lo que debo hacer?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #8 (permalink)  
Antiguo 25/09/2009, 12:48
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

hombre, no tendrás donde añadirlos, pero en algún sitio te pedirá el usuario y la contraseña para entrar a la página, digo yo vamos.
  #9 (permalink)  
Antiguo 25/09/2009, 12:51
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Claro, mediante un require llamo a otro codigo, a este:

Código php:
Ver original
  1. <?php
  2. function pass_protect($name, $pass, $mensaje='Area solo para usuarios registrados'){
  3.     $files['.htaccess'] = array(
  4.         'AuthName "'.$mensaje.'" ',
  5.         'AuthType Basic ',
  6.         'AuthUserFile '.realpath('./').'/.htpasswd ',
  7.         //'AuthGroupFile /dev/null ',
  8.         'require valid-user '
  9.     );
  10.     if(is_array($name) && is_array($pass)){
  11.         foreach($name as $k => $v){
  12.             if( !empty($name[$k]) && !empty($pass[$k]) ){   $files['.htpasswd'][] = $name[$k].':'.crypt($pass[$k]);    }
  13.         }
  14.     } elseif(is_array($name)){  foreach($name as $k => $v){   $files['.htpasswd'][] = $v.':'.crypt($pass);   }  
  15.     } elseif(is_array($pass)){  foreach($pass as $k => $v){   $files['.htpasswd'][] = $name.':'.crypt($v);   }  
  16.     } else {                $files['.htpasswd'][] = $name.':'.crypt($pass);
  17.     }
  18.     foreach($files as $filename => $cont){
  19.         $cont   = implode("\n", $cont);
  20.         $fp  = fopen($filename, 'w+');
  21.         $read   = fwrite($fp, $cont, strlen($cont));
  22.         fclose($fp);
  23.     }
  24.     return true;
  25. }
  26. ?>

¿Dónde lo tendría que colocar? ¿En el de llamar al usuario o donde pongo el usuario?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #10 (permalink)  
Antiguo 26/09/2009, 12:44
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

tomate el tiempo de crear un formulario para agregar usuarios o administradores. TE vas a ahorrar un monton de problemas. Recuerda que mas del 90% de los problemas de seguridad son causados por mala planeacion o mal desarrollo. En tu caso, estas causando un problema solo por no tener una manera de agregar usuarios de forma mas seura. Tan solo el hecho de que estas guardadno tus datos en una archivo de texto ya te baja un punto.

Puedes hacer lo siguiente:
1) pon tu archivo en un lugar arria de tu directorio publico en el server
2) usa un metodo de encripcion de una sola via.
3) crea una pagina donde puedas registrar a tus usuarios.

Tomar unas simples precauciones puede aumentar la seguridad de tu sitio.
__________________
twitter: @imbuzu
  #11 (permalink)  
Antiguo 26/09/2009, 17:59
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Cita:
Iniciado por buzu Ver Mensaje
tomate el tiempo de crear un formulario para agregar usuarios o administradores. TE vas a ahorrar un monton de problemas. Recuerda que mas del 90% de los problemas de seguridad son causados por mala planeacion o mal desarrollo. En tu caso, estas causando un problema solo por no tener una manera de agregar usuarios de forma mas seura. Tan solo el hecho de que estas guardadno tus datos en una archivo de texto ya te baja un punto.

Puedes hacer lo siguiente:
1) pon tu archivo en un lugar arria de tu directorio publico en el server
2) usa un metodo de encripcion de una sola via.
3) crea una pagina donde puedas registrar a tus usuarios.

Tomar unas simples precauciones puede aumentar la seguridad de tu sitio.
Lo tendré en cuenta, ya estoy en ello :D

Creando un sistema de registro mediante un tutorial, al cual le voy a tener que modificar y añadir algunas cosas.

Saludos y gracias.
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #12 (permalink)  
Antiguo 28/09/2009, 20:25
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

si, por cierto, no se si te quedo claro el por que no te funciona. La cosa es simple, cuando tu guardas la contrasena manualamente guardas digamos lo siguiente:

pwd: supersecreto

y luego cuando el programa te pide la contrasena tu pones 'supersecreto', pero en sus adentros el programa pasa ese valor por una funcion de php (crypt()) que te cambia totalmente el valor regresando digamos:

aaLK8UOIK*y7(IUYGHJG (solo un ejemplo)

por lo que al comparar el valor que te regresa la funcion con el valor que has guardado como contrasena estos no son iguales por lo que te vueve a preguntar por la contrasena.

Probablemente ya habia quedado claro, pero com no lei el resto de las respuestas, quice aclararlo.

Saludos
__________________
twitter: @imbuzu
  #13 (permalink)  
Antiguo 29/09/2009, 08:45
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Aunque coloque la contraseña correctamente me vuelve a salir una y otra ve

Cita:
Iniciado por buzu Ver Mensaje
si, por cierto, no se si te quedo claro el por que no te funciona. La cosa es simple, cuando tu guardas la contrasena manualamente guardas digamos lo siguiente:

pwd: supersecreto

y luego cuando el programa te pide la contrasena tu pones 'supersecreto', pero en sus adentros el programa pasa ese valor por una funcion de php (crypt()) que te cambia totalmente el valor regresando digamos:

aaLK8UOIK*y7(IUYGHJG (solo un ejemplo)

por lo que al comparar el valor que te regresa la funcion con el valor que has guardado como contrasena estos no son iguales por lo que te vueve a preguntar por la contrasena.

Probablemente ya habia quedado claro, pero com no lei el resto de las respuestas, quice aclararlo.

Saludos
Si, ya me había quedado claro pero muchas gracias de todas formas Buzu.

Ya os colocaré los problemas que no haya solucionado del formulario (del tutorial) que he creado xD.

Saludos y gracias.
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
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 15:29.