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

Discussione: Cookie e Sicurezza

  1. #1

    Cookie e Sicurezza

    Salve scusate il disturbo ma avrei bisogno di un aiutino per migliorare la sicurezza di cookie e sessioni... allora io ho il seguente script di login:

    Codice PHP:
    <?php
    $link 
    "http://localhost";

    require_once(
    './class/database.class.php');
    require_once (
    './class/security.class.php');
    require_once(
    './functions/language.php');

    $dbconnect = new Database();
    $security = new Security();

    $dbconnect->Connect();
    $security->control_Post();
    $security->control_Get();

    session_start();

    if ((isset(
    $_SESSION['login']) == 1) or (isset($_COOKIE['username']) == 1)) {
        
    $username $_COOKIE['username'];

        print(
    $language['welcomeuser']);
        print(
    ""$username);
        print(
    "

    <a href=\"esempiologout.php\">Logout</a>"
    );
    }
    else {
    ?>

    <form action="" method="post">
        <table width="75%" align="center">
            <tr>
                <td width="50%" height="30px" colspan="2" align="left"><?php print($language['welcome']); ?>[/b]</td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['username']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['password']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['remember']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="checkbox" name="remember"  checked="checked" /></td>
            </tr>
            <tr>
                <td align="center" colspan="2" height="30px" align="center"><input type="submit" value="Login" name="login" /></td>
            </tr>
        </table>
    </form>

    <?php
    if (isset($_POST['login'])) {
        
    $username $_POST['username'];
        
    $password $_POST['password'];

        
    $username $security->control_Username($username);
        
    $password $security->control_Password($password);

        
    $passwordcrypt md5(sha1($password));

        
    $query $dbconnect->Query("SELECT * FROM pp_users WHERE username='$username' AND password='$passwordcrypt'");
        
    $result $dbconnect->fetchObject($query);

        if (!
    $result) {
            exit(
    "Login is Failed!
    Please try Again!"
    );
        }
        else {
            if(isset(
    $_POST['remember'])) {
                
    $link str_replace("http://"""$link);
                
    $site str_replace("/"""$link);
                
                
    setcookie('username'$username,  time() + 86400'/'$site);

                print(
    "Login Completed!");
            }
            else {
                
    $_SESSION['login'] = 1;
                
    $_SESSION['username'] = $username;
                
    $_SESSION['password'] = $password;

                
    session_write_close();

                print(
    "Login Completed!");
            }
        }
    }
    }
    ?>
    ora visto che vengono inviate sessioni e in caso cookie vorrei capire come migliorare la sicurezza sia delle sessioni che dei cookie e in caso cosa c'è da modificare... grazie

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    [...]or (isset($_COOKIE['username']) == 1)) {
    $username = $_COOKIE['username'];
    print($language['welcomeuser']); [...]

    Quindi basta che uno ti passi un username nel cookie e tu, senza controllare l'esistenza, e senza controllare la password lo consideri loggato?

    Direi che per miglioare, dovresti cominciare con questo aspetto.

  3. #3
    si mi sono dimenticato il codice ... lo faccio subito... xD

  4. #4
    Ecco il nuovo codice:

    Codice PHP:
    <?php
    $link 
    "http://localhost";

    require_once(
    './class/database.class.php');
    require_once (
    './class/security.class.php');
    require_once(
    './functions/language.php');

    $dbconnect = new Database();
    $security = new Security();

    $dbconnect->Connect();
    $security->control_Post();
    $security->control_Get();

    session_start();

    if (isset(
    $_SESSION['login']) == 1) {
        
    $username $_SESSION['username'];
        
    $password $_SESSION['password'];
        
        
    $username $security->control_Username($username);
        
    $password $security->control_Password($password);
        
        
    $passwordcrypt md5(sha1($password));
        
        
    $query $dbconnect->Query("SELECT * FROM pp_users WHERE username='$username' AND password='$passwordcrypt'");
        
    $result $dbconnect->fetchObject($query);
        
        if (!
    $result) {
            exit(
    "Login is Failed!
    Please try Again!"
    );
        }
        else{
            require_once(
    "FILE DEL BLOCCO UTENTE");
        }
    }
    elseif ((isset(
    $_COOKIE['username']) == 1) and (isset($_COOKIE['password']))) {
        
    $username $_COOKIE['username'];
        
    $password $_COOKIE['password'];
        
        
    $username $security->control_Username($username);
        
    $password $security->control_Password($password);
        
        
    $passwordcrypt md5(sha1($password));
        
        
    $query $dbconnect->Query("SELECT * FROM pp_users WHERE username='$username' AND password='$passwordcrypt'");
        
    $result $dbconnect->fetchObject($query);
        
        if (!
    $result) {
            exit(
    "Login is Failed!
    Please try Again!"
    );
        }
        else{
            require_once(
    "FILE DEL BLOCCO UTENTE");
        }
    }
    else {
    ?>

    <form action="" method="post">
        <table width="75%" align="center">
            <tr>
                <td width="50%" height="30px" colspan="2" align="left"><?php print($language['welcome']); ?>[/b]</td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['username']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['password']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td width="50%" height="30px" align="right"><?php print($language['remember']); ?>:</td>
                <td width="50%" height="30px" align="left"><input type="checkbox" name="remember"  checked="checked" /></td>
            </tr>
            <tr>
                <td align="center" colspan="2" height="30px" align="center"><input type="submit" value="Login" name="login" /></td>
            </tr>
        </table>
    </form>

    <?php
    if (isset($_POST['login'])) {
        
    $username $_POST['username'];
        
    $password $_POST['password'];

        
    $username $security->control_Username($username);
        
    $password $security->control_Password($password);

        
    $passwordcrypt md5(sha1($password));

        
    $query $dbconnect->Query("SELECT * FROM pp_users WHERE username='$username' AND password='$passwordcrypt'");
        
    $result $dbconnect->fetchObject($query);

        if (!
    $result) {
            exit(
    "Login is Failed!
    Please try Again!"
    );
        }
        else {
            if(isset(
    $_POST['remember'])) {
                
    $link str_replace("http://"""$link);
                
    $site str_replace("/"""$link);
                
                
    setcookie('username'$username,  time() + 86400'/'$site);
                
    setcookie('password'$password,  time() + 86400'/'$site);

                print(
    "Login Completed!");
            }
            else {
                
    $_SESSION['login'] = 1;
                
    $_SESSION['username'] = $username;
                
    $_SESSION['password'] = $password;

                
    session_write_close();

                print(
    "Login Completed!");
            }
        }
    }
    }
    ?>
    altri aspetti importanti?

  5. #5
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Anarchia_92
    ...
    altri aspetti importanti?
    Certo. Mai salvare username e password in chiaro nel cookie. Dovrebbero essreci un sacco di guide in giro su questo.
    E se uno ti entra con il cookie, se hai verificato ed e' tutto ok - gli dovresti aggiornare la scadenza del cookie.

    Poi, se $security->control_Username() e $security->control_Password() fanno la pulizia di eventuali caratteri pericolosi, dovresti essere a posto, per quello che mi sembra..

  6. #6
    la classe di sicurezza fa esattamente quello che hai detto tu...

    invece per quanto riguarda ls chiarezza dei dati come potrei cryptarli e poi decriptarli..???

    grazie...

  7. #7
    Originariamente inviato da Anarchia_92
    la classe di sicurezza fa esattamente quello che hai detto tu...

    invece per quanto riguarda ls chiarezza dei dati come potrei cryptarli e poi decriptarli..???

    grazie...
    No, a mio modestissimo avviso NON devi salvare cose del genere nel cookie, salvale direttamente nella session, che essendo lato server è molto più sicura!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    ma non devi decriptarli.

    select id,username,etc from tabella where md5(sha1(`username`)) = '$user_criptato_da_cookie' && md5(sha1(`password`)) = '$pass_criptato_da_cookie' ...

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Shores
    No, a mio modestissimo avviso NON devi salvare cose del genere nel cookie, salvale direttamente nella session, che essendo lato server è molto più sicura!
    a lui serve per l'auto login.

  10. #10
    se c e una funzione che mi imposta un massimo di ore e poi la sessione scade andrebbe anche meglio...
    i cookie mi servono sl x il ricormadi e basta ma se la stessa cs la posso fare cn le sessioni molto meglio..
    come xo?

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.