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

Discussione: problema Login

  1. #1

    problema Login

    Salve a tutti,

    ho un problema con la sezione autentificazione login del mio cms. Funziona correttamente, se non che mi obbliga a inserire due volte username e password riproponendomi la pagina login.php una seconda volta dopo il primo inserimento dati. Why?

    Vi posto il codice che si occupa della verifica. I dati passano dalla pagina login.php alla pagina login_admin.php.

    Codice PHP:
        <?php include ("config.inc.php"); 
    include (
    "connect.php"); 
    $tabella "demologin";

    if (isset(
    $_POST['posted'])) {

    $username $_POST['username'];
    $password $_POST['password'];
    if ((
    $username =="") || ($password =="")){
    echo 
    "i campi non sono compilati. Inserisci username e password";
    $url "http://XXX/login.php";

    echo 
    "<script language=\"javascript\">
    location.href=\"
    $url\";
    </script>"
    ;
    }else{

    //controllo che non sia gia' registrato

    $check_username=mysql_query("select * from $tabella where username='$username' || password='password'");



        
    $get_username=@mysql_fetch_array($check_username); 

        
    $get_password=@mysql_fetch_array($check_password);

        
    $existusername=$get_username[username]; 
        
        
    $existpassword=$get_password[password];



        if((
    $username==$existusername) || ($password==$existpassword)) { 
        
        
    /*$check_password=mysql_query("select * from $tabella where password='$password'");
        $get_password=@mysql_fetch_array($check_password);
        
        $existpassword=$get_password[password];

        if ($password==$existpassword) {*/

        
    session_start();
        
    session_register($username,$password);
        
    $_SESSION['username'] = $username;
        
    $_SESSION['password'] = $password;
        
        
    $url 'http://XXX/main.php';

    echo 
    "<script language=\"javascript\">
    location.href=\"
    $url\";
    </script>"
    ;
    }else{
     
    $url2 'http://XXX/login.php';

    echo 
    "<script language=\"javascript\">
    location.href=\"
    $url2\";
    </script>"
    ;
        

     }
    }
    }

    ?>

  2. #2
    Nel tuo script alcune cose non le ho comprese...
    forse non risolvi ma cmq prova così. metti

    session_start();

    al primo rigo ed eliminalo da sotto...

    <?php
    session_start();

    etc etc

    session_register($username,$password);
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;

    etc etc

    ?>

  3. #3
    e no... session_start() lo inserisco dopo la verifica dei dati da POST...
    La situazione strana è che si riesce ad accedere alla pagina di destinazione con i dati username e password corretti ma viene presentata due volte la schermata login !

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    fai un debug passo passo e vedi quale condizione viene fallita...

  5. #5
    anche se lo metti ad inizio cambia poco dato che username e password le valorizzi cmq dopo il login.

    In ogni caso:

    mettere la password in una variabile di sessione è una (SECONDO ME!!) sbagliata dato che tali variabili sono liberamente visualizzabili all'interno della cartella tmp del server!

    cmq aspetta pareri più autorevoli del mio...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    Originariamente inviato da oly1982
    anche se lo metti ad inizio cambia poco dato che username e password le valorizzi cmq dopo il login.

    In ogni caso:

    mettere la password in una variabile di sessione è una (SECONDO ME!!) sbagliata dato che tali variabili sono liberamente visualizzabili all'interno della cartella tmp del server!

    cmq aspetta pareri più autorevoli del mio...
    ma la cartella tmp è comunque esterna al webserver, quindi non raggiungibile dagli utenti...o mi sbaglio?

  7. #7
    Originariamente inviato da freeman74
    ma la cartella tmp è comunque esterna al webserver, quindi non raggiungibile dagli utenti...o mi sbaglio?
    Posso sbagliarmi.

    Molte delle cose che ho imparato le ho apprese tramite questo forum e qualche mese fa quando iniziai a studiare il php feci il mio primo script per il login che postai su questo forum
    http://forum.html.it/forum/showthrea...readid=1378835

    Ricevetti cun commento molto utile da mtx_maurizio (bravissimo!!) che a proposito del salvataggio delle sessioni mi disse così:

    Originariamente inviato da mtx_maurizio
    Un altro accorgimento sarebbe quello di definire una cartella dove salvare le sessioni. Se non altrimenti specificato, vengono salvate nella cartella tmp del server (che ha il problema di essere condivisa con tutti gli altri siti che girano su quel server). Usa la funzione session_save_path per definire un percorso interno al tuo sito. Questo è più sicuro.
    ... e pensa che io non salvavo la password in una variabile di sessione!!!

    edit:

    http://www.areaaperta.com/?p=53

    leggi la parte in cui dice "dove sono le vulnerabilità?"

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    ottimo!
    session_regenerate_id(TRUE) purtroppo non la conoscevo...ne farò ampio uso!
    anche se lavoro soprattutto in ambienti intranet, quindi applicazioni poco esposte ad internet...ma la prudenza non è mai troppa!

  9. #9
    Originariamente inviato da seokey
    e no... session_start() lo inserisco dopo la verifica dei dati da POST...
    La situazione strana è che si riesce ad accedere alla pagina di destinazione con i dati username e password corretti ma viene presentata due volte la schermata login !
    Spiacente ma session_start() va inserito SEMPRE ad inizio script per evitare comportamenti anomali dello script stesso.
    L'unica cosa che conviene anteporgli è il comando INI_SET() con il session_savepath per cambiare a runtime la cartella di salvataggio dei file di sessione.
    Il mitico MTX_Maurizio (mio amico di forum, peraltro) ha consigliato bene oly1982 in quanto utilizzando una cartella interna del proprio sito, rispetto alla TMP di default dei server web, è un buon metodo per evitare il session hijacking, cioè la tecnica di hacking spesso usata per "entrare" da una specie di porta posteriore nei siti condivisi in un server.
    Anche perché, se magari il vostro sito è bello sicuro, ma poi le sessioni vengono salvate in una cartella comune ad altri siti assolutamente non sicuri, tutti i vostri controlli di sicurezza saltano con poco sforzo!
    A tal proposito, vi consiglio di leggere la Guida alla Sicurezza in PHP, dove la tecnica è spiegata a dovere.
    Viene spiegato per bene anche come utilizzare a dovere le sessioni per evitare quanto più possibile gli hacking.

    Il mio consiglio, poi, è quello di evitare di salvare tutti i dati sensibili di una procedura di login nella sessione.
    Preferisco creare un riferimento univoco all'utente (magari semplicemente creando un MD5 del suo username oppure del microtime al momento del login) e salvarlo sia nel DB sia nella sessione.
    Con questo metodo, per esempio, si riesce a fare un doppio controllo sulle credenziali dell'utente.

    Insomma... leggiti bene la guida perché ti apre gli occhi.... anche sull'uso del session_regenrate_id().
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    a questo punto mi e ti domando: ma come funziona esattamente il session hijacking?
    Leggevo che comunque l'hacker deve in qualche modo accedere ad una tua sessione...quindi o si lasciano le finestre aperte del browser oppure?

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.