Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    2

    php+mysql Sicurezza Autenticazione

    salve,

    sto preparando un'area riservata per il mio sito.
    ho trovato un tutorial perfettamente funzionante che utilizza una integrazione tra falsh+php+mysql

    questo è il codice php richiamato dal form per salvare i dati su database:

    Codice PHP:
    <?php
    //--------------------MYSQL DETAILS ---------------------------------------//

    //mysql details
    require_once("dbDetails.php");


    //------------------GATHER FORM DETAILS ---------------------------------//
    $firstname $_POST['firstname'];
    $surname $_POST['surname'];
    $age $_POST['age'];
    $email $_POST['email'];
    $randomPassword generatePassword();


    // random password generator courtesy of [url]http://www.totallyphp.co.uk/code/create_a_random_password.htm[/url]
    function generatePassword() {

        
    $chars "abcdefghijkmnopqrstuvwxyz023456789";
        
    srand((double)microtime()*1000000);
        
    $i 0;
        
    $pass '' ;

        while (
    $i <= 10) {
            
    $num rand() % 33;
            
    $tmp substr($chars$num1);
            
    $pass $pass $tmp;
            
    $i++;
        }
        return 
    $pass;
    }

    //----first check the email addres does not exist already
    $SQL "SELECT * FROM members_tbl WHERE email ='".$email."'";
    $rs mysql_query($SQL,$conn);
    $numRows mysql_num_rows($rs);
    if(
    $numRows 0){
        echo 
    '&result=emailExists&';
        exit();
    //abort php script
    }


    //--------insert into database------------------------------//

    $insertSQL "INSERT INTO members_tbl(first_name, surname, age, email, password) VALUES ('$firstname', '$surname', '$age', '$email', '$randomPassword')";

    $rs mysql_query($insertSQL,$conn);


    if(
    $rs){
      
    //send user email with password
       
    sendEmail();
       echo 
    '&result=success&';
    }else{
      echo 
    '&result=failure&';
    }


    //------------------- EMAIL FUNCTIONALITY--------------------------//
    //this will send the user his password and in effect this will make sure he has given a valid email address

    //the following will be where the user will reply to if need be

    function sendEmail(){
        
    $yourname 'NOME'//PUT YOUR NAME HERE
        
    $youremail 'MAIL@mail.it';//PUT YOUR EMAIL ADDRESS HERE
        
        //to user
        
    $headers "From: $yourname <$youremail>\n";
        
    $headers .= "Reply-To: $yourname <$youremail>\n";
        
    $headers .= "MIME-Version: 1.0\n";
        
    $headers .= "Content-type: text/html; charset=iso-8859-1";
        
        
        
    //the message body
        
    $message "Spett.le ".$GLOBALS['firstname'].",

     XXXX vi ringrazia per la registrazione. LA VOSTRA PASSWORD E': "
    .$GLOBALS['randomPassword']."</p>";
        
        
        
    mail($GLOBALS['email'], "Ecco i tuoi dettagli di registrazione: "$message$headers);
    ?>
    mentre questo è il codice richiamato dal form di login:

    Codice PHP:
     <?php
    session_start
    ();
    $email $_POST['email'];
    $password $_POST['password'];

    //mysqldetails
    require_once("dbDetails.php");

    $SQL "SELECT * FROM members_tbl WHERE email ='".$email."' AND password = '".$password."'";

    $rs mysql_query($SQL,$conn);
    $numRows mysql_num_rows($rs);

    if(
    $numRows 0){
        
    $_SESSION['loggedIn'] = true;
        echo 
    'login=success';
    }else{
        echo 
    'login=failure';
    }
    ?>
    e fin qui tutto ok. funziona.

    ma dopo aver letto la guida sulla sicurezza in PHP di HTML.IT
    sono diventato molto sospettoso.
    premetto che sono alle prime armi col php, ma è chiaro
    che questo codice potrebbe essere facilmente vulnerabile
    poichè le password vengono salvate in chiaro sul database,
    e vorrei capire come aggiungere la funzione md5 per salvare la firma della password sul database.

    se prendo in considerazione questa parte di codice:

    Codice PHP:
    //------------------GATHER FORM DETAILS ---------------------------------//
    $firstname $_POST['firstname'];
    $surname $_POST['surname'];
    $age $_POST['age'];
    $email $_POST['email'];
    $randomPassword generatePassword(); 
    sulla variabile password creata dalla funzione generatePassword(); manca la voce $_POST

    ora, come e dove posso aggiungere la funzione md5 per creare la firma della password?
    lo spirito continua...

  2. #2

    Re: php+mysql Sicurezza Autenticazione

    Originariamente inviato da badore


    sulla variabile password creata dalla funzione generatePassword(); manca la voce $_POST

    ora, come e dove posso aggiungere la funzione md5 per creare la firma della password?
    :master:

    ma....

    manca $_POST perchè la variabile non proviene dal form(con method=post) t trovi?

    e poi a caosa t serve l'md5? non ho ben capito..
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    2
    ok. la variabile non proviene dal form.


    ma come posso evitare che la password venga registrata in chiaro sul database?
    lo spirito continua...

  4. #4
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Dunque se usi l'md5 potresti anche evitare di crearla tu la password, ma farla digitare all'utente.
    Io ti proporrei sha1 invce di md5, sono simili, si usano come delle normali funzioni md5($POST['password']); oppure sha1($POST['password']);.
    Come ben saprai queste non sono decriptabili, quindi se un utente perderà la password....si frega
    No skerzo, la dovrà ridigitare perchè non sarà più possibile rintracciarla.
    Per fare il login dovrai compararla con la password criptata che l'utente digiterà al momento del login nell'area riservata.
    Spero di essere stato chiaro. :master: :master:

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.