Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: criptare *txt con md5

  1. #1

    criptare *txt con md5

    Ho implementato su un sito questo semplice sistema di login. Come vedete l'esempio non spiega come ottenere la criptazione del file .txt nel quale sono contenute le coppie username/password. Vorrei un aiuto per implementare tale criptazione con la funzione php MD5. Grazie in anticipo

  2. #2
    Guarda, la cosa è semplice.

    MD5 funziona a senso unico, ovvero da una stringa crei il codice, ma dal codice non crei niente.

    Potresti lasciare la user in chiaro, in genere si fa così, e la password invece la salvi in md5 (potresti anche aggiungere una stringa segreta alla password per renderla ancora più sicura).

    Quando viene effettuato il login fai una select in base alla sola user, poi confronti l'md5 della password (+ eventuale secret) inserita con l'md5 che hai ricavato nel db.

    In questo modo non ti puoi sbagliare, unico inconveniente è che se un utente si perde la password non la recupera, ma ormai ho visto che è pratica comune in caso di smarrimento rimandare una nuova password provvisoria nella casella che si lascia nel db.

  3. #3
    In pratica, come dovrei integrare questo script?
    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_POST["invio"])) {
      
    $puntatore fopen("testi/pasx.txt""r");
      
    $trovato 0;
      while ((!
    feof($puntatore)) && (!$trovato)) {
        
    $linea fgets($puntatore);
        
    $trovato stristr($linea$_POST["userid"]);
        
    $puntatore++;
      }
      
    fclose($puntatore);
      list(
    $nomeutente$password) = split("~:~"$linea);
      if ((
    $trovato)  && ($_POST["passwd"] == trim($password))) {
        
    session_register('autorizzato');
        
    $_SESSION["autorizzato"] = 1;
        
    $destinazione "inizia.php";
      } else {
        
    $destinazione "destroy.php";
      }
      echo 
    '<script language=javascript>document.location.href="'.$destinazione.'"</script>';
    } else {
      
    // HTML ?>
    ........................
    ........................
    Scusa per l'ignoranza

  4. #4
    Guarda, da quello che ho capito cerchi di gestire le utente inserite in un txt.
    Effettivamente non è che sia il massimo della sicurezza, perché, a menoché non modifichi le proprietà della cartella o non ci infili un htaccess in modo di impedire la lettura del file da utenti web, rischi che si scarichino l'intero file.

    Onde evitare questo rischio è bene, effettivamente, che tu cripti sia la user che la password nel file di testo.

    Così tu prendi in entrata user e password da form, le cripti in md5 e le confronti con ogni riga del file di testo, ma ricordati che in questo caso sarà casesensitive anche la user.

    Cmq è più sicuro se usi un database.

  5. #5
    Originariamente inviato da Debiru
    Così tu prendi in entrata user e password da form, le cripti in md5 e le confronti con ogni riga del file di testo, ma ricordati che in questo caso sarà casesensitive anche la user.
    Esatto, mi diresti come utilizzare la funzione md5 per il criptaggio in entrata di user e pass?
    Non so come usare la funzione e come integrarne l'esecuzione nello script che ho postato...

  6. #6
    oppure per evitare che ti scarichino il file puoi mettere il contenuto del txt in un file php come comento

    <?php
    /*
    il tuo txt
    */
    ?>

    in questo modo anche se conoscono il nome del file non ricevono niente in output, basta ricordarsi di togliere le prime 2 righe e le ultime 2

    per il resto devi memorizzare la password passandola alla funzione md5(), poi per il confronto basta cambiare questa riga da
    if (($trovato) && ($_POST["passwd"] == trim($password))) {
    a
    if (($trovato) && (md5($_POST["passwd"]) == trim($password))) {

  7. #7
    Originariamente inviato da bubu77
    oppure per evitare che ti scarichino il file puoi mettere il contenuto del txt in un file php come comento

    <?php
    /*
    il tuo txt
    */
    ?>

    in questo modo anche se conoscono il nome del file non ricevono niente in output, basta ricordarsi di togliere le prime 2 righe e le ultime 2

    per il resto devi memorizzare la password passandola alla funzione md5(), poi per il confronto basta cambiare questa riga da
    if (($trovato) && ($_POST["passwd"] == trim($password))) {
    a
    if (($trovato) && (md5($_POST["passwd"]) == trim($password))) {
    Ok, il primo passo è fatto. Mettere il contenuto del file txt all'interno di un file php come commento ha dato il risultato di rendere nome utente e password non visibili.
    Quello che non ho capito è come passare alla funzione md5 la password in fase di memorizzazione. Il codice da te postato

    Codice PHP:
    if (($trovato)  && (md5($_POST["passwd"]) == trim($password))) { 
    è quello successivo relativo alla fase di confronto.
    Ma per la memorizzazione a quale parte del codice devo fare riferimento?
    Posto il codice completo

    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_POST["invio"])) {
      
    $puntatore fopen("testi/pasx.php""r");
      
    $trovato 0;
      while ((!
    feof($puntatore)) && (!$trovato)) {
        
    $linea fgets($puntatore);
        
    $trovato stristr($linea$_POST["userid"]);
        
    $puntatore++;
      }
      
    fclose($puntatore);
      list(
    $nomeutente$password) = split("~:~"$linea);
      if ((
    $trovato)  && ($_POST["passwd"] == trim($password))) {
        
    session_register('autorizzato');
        
    $_SESSION["autorizzato"] = 1;
        
    $destinazione "inizia.php";
      } else {
        
    $destinazione "destroy.php";
      }
      echo 
    '<script language=javascript>document.location.href="'.$destinazione.'"</script>';
    } else {
      
    // HTML ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
      <title>Prova Login php</title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      </head>
      <body>
      <form method=post action="login.php">
        <table width="300" cellpadding="4" cellspacing="1" border="0">
          <tr>
            <td colspan="2" align="left">
              <u>inserite nome utente e password</u>:
            </td>
          </tr>
          <tr>
            <td>
              nome utente: 
            </td>
            <td>
              <input type="text" name="userid">
            </td>
          </tr>
          <tr>
            <td>
              password: 
            </td>
            <td>
              <input type="password" name="passwd">
            </td>
          </tr>
          <tr>
            <td colspan="2">
              <input type="submit" name="invio" value="invio">
              
              <input type="reset" name="cancella" value="cancella">
            </td>
          </tr>
        </table>
        

      </form>
      </body>
      </html>
    <? //fine HTML
    }
    ?>

  8. #8
    Ho modificato lo script così

    Codice PHP:
    <? session_start(); ?>
    <?php
    if(isset($_POST['invio']))   {
      
    $puntatore fopen("testi/pasx.php"r);
      
    $trovato 0;
      while ((!
    feof($puntatore)) && (!$trovato)) {
        
    $linea fgets($puntatore50);
        
    $trovato stristr($linea$_POST['userid']);
        
    $puntatore++;
      }
      
    fclose($puntatore);
      list(
    $nomeutente$password) = split("~:~"$linea);
      
    $password trim($password);
      
    $password md5($password);

      if ((
    $trovato)  && (md5($_POST['passwd']) == $password) ) {
    E' corretto? La password così è criptata?

  9. #9
    Originariamente inviato da ciucciarello
    Ho modificato lo script così

    Codice PHP:
    <? session_start(); ?>
    <?php
    if(isset($_POST['invio']))   {
      
    $puntatore fopen("testi/pasx.php"r);
      
    $trovato 0;
      while ((!
    feof($puntatore)) && (!$trovato)) {
        
    $linea fgets($puntatore50);
        
    $trovato stristr($linea$_POST['userid']);
        
    $puntatore++;
      }
      
    fclose($puntatore);
      list(
    $nomeutente$password) = split("~:~"$linea);
      
    $password trim($password);
      
    $password md5($password);

      if ((
    $trovato)  && (md5($_POST['passwd']) == $password) ) {
    E' corretto? La password così è criptata?
    Up, non mi abbandonate ora

  10. #10
    Mi sa che non hai ben afferrato il concetto

    Nel file di testo deve essere presente la password criptata, quindi già convertita a MD5, nel momento che trovi l'utente prendi in esame la password relativa a quella riga e la devi confrontare con l'MD5 della password inserita dall'utente.

    Da quello che ho visto tu presumi che nel file la password sia in chiaro e una volta trovata la riga converti in MD5 questa password per confrontarla con quella inserita, ma non ha senso, che te ne fai della conversione in MD5 se sono già tutte e due in chiaro?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.