Foros del Web » Programando para Internet » PHP »

Se puede hacer esto con los password

Estas en el tema de Se puede hacer esto con los password en el foro de PHP en Foros del Web. Quiero saber si es posible mediante PHP o de alguna manera de pasar los passwords que mande por un formulario a traves de la web ...
  #1 (permalink)  
Antiguo 25/09/2003, 19:51
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Se puede hacer esto con los password

Quiero saber si es posible mediante PHP o de alguna manera de pasar los passwords que mande por un formulario a traves de la web de forma encriptada pues las contraseñas pasan de forma plana y cualquiera pudiera verla. Lo que estoy diciendo es como lo hace Yahoo con las contraseñas que envían a sus servidores
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 25/09/2003, 19:59
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
si claro asi....

Código PHP:

$pass1 
"pedo";

$pass1 md5($pass1);// encriptacion metodo MD5

echo $pass1
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 25/09/2003, 20:03
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
tambie lo podes hcer con base64_encode para encriptarlo y luego base64_decode para verlo

Slaudos!
  #4 (permalink)  
Antiguo 25/09/2003, 20:17
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Si eso lo sabia, pero ...

Si eso sabia hacerlo pero no se si ese password pasa encriptado es decir si desde el explorer cuando le das ver codigo fuente te pone el password encriptado o te pone el password original. EN cuanto a lo de base_64code no se trabajar con eso
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 25/09/2003, 20:25
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
hace la prueba!, vas a ver que es imposible hacer eso de ver el password mirando el cogido fuente., te digo que lo que mejor hay es probando y metiendo mano.

Saludos!
  #6 (permalink)  
Antiguo 25/09/2003, 21:05
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Bueno yaho creo que utiliza una encriptacion doble,
a ver si me se explicar, al llamar a la pagina se manda una
clave, que sea siempre diferente y aleatoria, creo que manda
un fecha con la funcion date mezcando el ella dia mes, minutos
segundos para que sea siempre diferente.

Recibes la clave encriptada md5 al abrir la pagina, luego con java script encriptas con md5 la contraseña del formulario y vuelves
a encriptar el resultado mas la clave que has recibido, ya cuando
recibes los datos a la pagina que procesa el formulario, solo tiens de comparar , la clave que te mando la pagina que la tienes
guardada en una sesion, mas la contraseña encriptada que
se supone la tienes guardada en la base de datos y lo encriptas
todo junto, de esta manera te da el mismo resultado que has
mandado.

Este sistema es casi imposible de que alguien pueda interceptar
tu contraseña pues envias cada vez algo diferente.

tienes la funcion md5 en java script en esta web http://pajhome.org.uk/crypt/md5/

Este ejemplo (que cogi la idea de una web, aunque no sabria decirte cual ) hace esto que te digo, en vez de sesiones utilizo
un archivo que guardo en la zona no navegable del servidor
aunque tb se puede utilizar sesiones , la idea es guardar la clave
que te manda el servidor para luego compararla.

tienes un archivo en la zona no navegable con la clave y la ruta
del archivo que se crea.

Código PHP:

<?
//clave
$sesion md5(date('d:G:g:s:I:w',time()))
//esta clave pones lo que quieras
$temp="ruta de los archivos que se crean en la zona no navegable"



//esto es el archivo login.php
function muestraForm() {

         global 
$temp,$sesion,$veces;
         
$ip=ip();
         
auto_delete();
         if(
file_exists($temp.$ip))
         {
            
$fa    implode("" file($temp.$ip));
            
$faa   explode("|",$fa);
            
$ses   trim($faa[0]);
            
$veces trim($faa[1]);
            
$tiempotime()+60*60;
/*en las variables $tiempo  puedes poner el tiempo que quieras, 
si tienes ip fija le pones mucho asi no tienes de logearte cada 
vez*/

        
}
       
         if(
$veces >=4error("<li> se ha intentado entrar mas de tres veces");
         
$tiempo=time()+60*60;
         
$veces++;
         
$fa = @fopen($fna $temp.$ip'w+');
         if (!
$faerror"<li> No se ha podido crear el archivo temp ");   
         
fwrite($fa"$sesion|$veces|0|$tiempo|$ip");
?>
<html>
<head>
<title>encriptar</title>
<!-- proporciona hex_md5 -->
<script src="md5.js"></script>
<script language="JavaScript">
function MakeIt()
{   

    var encript_a=hex_md5(document.formulario.contra.value);
    var encript_b=hex_md5(encript_a+"<? echo md5($sesion?>")
    var encript_u=hex_md5(document.formulario.usuario.value);

    document.formulario.usuario.value=encript_u;
    document.formulario.contra.value=encript_b;

}

</script>

<form onsubmit="MakeIt()" name="formulario" action="index.php?accion=auth" method="post" enctype="multipart/form-data" >
        <table width="40%" border="0" align="center" cellpadding="15" cellspacing="0" class="tabla1" >
          <tr align="center" bgcolor="#666699"> 
            <td colspan="2" height="30" class="peque2"><font color="#FFFFFF" size="3">AUTENTIFICACI&Oacute;N</font></td>
          </tr>
          <tr> 
            <td width="58%" height="70" align="right"><font size="-1">Nombre del 
              Usuario</font></td>
            <td width="42%" ><input name='usuario' type='text' class="entrada" size='25'></td>
          </tr>
          <tr> 
            <td height="59" align="right" ><font size="-1"></font><font size="-1">Contrase&ntilde;a 
              </font></td>
            <td><input name='contra'  type='password' class="entrada" size='25'></td>
          </tr>
          <tr> 
            <td colspan='2' align='center'> 
              <input  type='submit' class="entrada"  value='Login'>
            </td>
          </tr>
        </table>
      </form>
      </td>
  </tr>
  <tr> 
    <td valign="top"> <font size="-1">&nbsp;</font><br> <hr width="80%" noshade></td>
  </tr>
</table>
</body>
</html>
?>
<?
}
if(
$_GET["accion"]=="auth")
   {
    if(
autoriza($sesion))
       {
        echo 
"<META http-equiv=\"refresh\" content=\"0;url=index.php\">";
       }
     else 
muestraForm();
  }
else
    
muestraForm();

?>
aqui abajo la funciones que estan en archivo separado

Código PHP:
function autoriza()
{

       global 
$pass $temp$user;
       
        
$ip=ip();
         
$fa    implode("" file($temp.$ip));
         
$faa   explode("|",$fa); 
         
$tiempotime()+60*60;
         
$ses   $faa[0];
         
$veces $faa[1];
         
$t=md5($ses);
         
$contrasena=md5($pass.$t);
         
         if (
$_POST['contra']==$contrasena and $user==$_POST['usuario']) 
        {   
         
$fa = @fopen($fna $temp.$ip'w+');
         if (!
$faerror"<li> No se ha podido crear el archivo temp ");   
         
fwrite($fa"$ses|0|$user|$tiempo|$ip");
           return 
true;
        }
          else
          {
              unset(
$ses);
              return 
false;
          }
}

//y para ir borrando los  ficheros de ip esta funcion

function auto_delete()
{
     global 
$temp;
     
$i=0;     
     
$ip=ip();
      
$dir=opendir($temp);
      while(
$arch=readdir($dir)){
        if(
$arch=="." or $arch=="..")$arch="";
         else{ 
           
$i++ ;
           
$file=$temp.$arch;
           
$fichero[$i]=$file;
           
$inf=basename($fichero[$i]);
             if(
$inf==$ip)//miro si esta creado y cuanto tiempo lleva
             

                
$file=implode("" file($temp.$ip));
                
$control=explode("|",$file);
                if(
$control[3]<time())
                {
                   
unlink($temp.$ip);
                 }
//llave de if boorrado
              
}//llave de if de ip  
         
else
            {
//miro todos los archivos que esten al dia
            
$file=implode("" file($temp.$inf));
            
$control=explode("|",$file);
            if(
$control[3]<time())
            {
            
unlink($temp.$inf);
            }
//llave de if boorrado
       
}//llave de else de control archivos al dia
     
//llave de else 
   
}//llave de while 
   
closedir($dir);
}
//llave de funcion

//luego solo tienes de poner en la cabecera de cada pagina

entrada('login.php');// si no estas logueado te lleva al login


que esta es la funcion

function entrada($redirect)
{     
      global  
$temp $user;
      
$ip  ip();
      if(
file_exists($temp.$ip))
      {
        
$fa         implode("" file($temp.$ip));
        
$faa        explode("|",$fa);
        
$valid_user $faa[2];
        
$time       $faa[3];
        
$ip2        $faa[4];

        if (
$valid_user==$user and $time>time() and $ip2==$ip)
          return 
true;
          else echo 
"<META http-equiv=\"refresh\" content=\"0;url=$redirect\">";
      }
          else echo 
"<META http-equiv=\"refresh\" content=\"0;url=$redirect\">";

Este escript es una practica que hice, seguro que se puede
mejorar muchisimo y seguro que es mas facil hacerlo con sesiones
que con archivo.

Esta hecho con archivo para no tener de loguearse cada vez
sin enviar cookies.

Espero que te sirva

un saludo
  #7 (permalink)  
Antiguo 25/09/2003, 22:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa SSL que para eso se inventó dicho protocolo .. Eso cifra tus datos entre el navegador y el servidor en 128bits (o más) ...

El SSL (Secure Socket Layer) no depende de PHP .. sino del servidor HTTP que uses que debe tener instalado dicho módulo (openSSL .. o el que sea ..). A su vez el "SSL" no sólo ofrece ese "cifrado" (encriptación de los datos) sino que aporta "certificados" para que el cliente (tu navegador) sepa con quien está tratando (si es o no válido ese certificado y quien lo expendió) ...

El "SSL" son las páginas que ven comunmente como https:// ....

Pero, .. insisto que esto no depende PHP .. es más el "SSL" se comporta de forma transparente para PHP (o en general para el lenguaje del lado del servidor que se use) .. Es el servidor HTTP el que se encarga del "trabajo sucio" de todo el tema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 26/09/2003, 03:35
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Por supuesto que el SSL es lo ideal con este protocolo es
imposible (computociaonalmente hablando) descifrar los datos.

Aunqe para personas que no se dedican profesionalmente
resulta caro, unos 200 US$ al año por el certificado y los
servidores tb son algo mas caros.

El sistema de arriba solo sirve para enviar contraseñas
ya que el sistema md5 es irreversible,


un saludo
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 05:15.