• User

    Proteggere pagina php con password

    Ciao a tutti,
    vorrei proteggere una pagina php in maniera più sicura possibile.
    Dispongo sia di supporto php che di MySQL.
    Come posso fare?

    Grazie mille


  • ModSenior

    Tutorial area privata:
    http://www.giorgiotave.it/forum/php-mysql/83033-tutorial-area-privata.html#post512240
    puoi adattarlo alle tue esigenze togleindo la registrazione einserendo tu gli autorizzati nella tabella oppure con htaccess:
    http://www.sastgroup.com/tutorials/proteggere-un-file-con-password-usando-il-file-htaccess


  • User

    Grazie mille.
    Tra i 2 tu quale consigli?


  • ModSenior

    Se devi inserire parecchi utenti, sicuramente è più facile da gestire in un database quindi la prima... ma a livello di sicurezza per me sono identici...


  • User Attivo

    Ciao Thedarkit,

    Ho il seguente problema. ho creato una sessione, l'ho protetta e fino qua tutto bene. Infatti la pagina di benvenuto al sito, se sei loggato si vede se non lo sei ti rimanda direttamente al login.php Il punto è questo. Dovrei inserire un pulsantino di logout. Perchè ho fatto un altro file logout, ma ogni volta lo devo far girare, invece voglio dare la possibilità di cliccare su questo pulsantino e di uscire direttamente. Distruggendo la sessione. Nella pagina di benvenuto, c'è il seguente richiamo: require_once'paginaprotetta.php'; così mi permette di proteggere la pagina. Però, stranamente, se vado a mettere il pulsantino, non me lo fa visualizzare. perchè ??? Ti posto il codice di come sono strutturare per avere un'idea. Se mi puoi aiutare te ne sarei grato.

    Allora questo è il login.php

    [PHP]

    <?php

    require_once("connetti.php");
    require_once("data.php");

    session_start();

    if(isset($_SESSION['utente'])) {
    $username =$_SESSION['utente'];
    $qry= "select * from utenti where username = '".$username."'";
    // echo "AAAAA".$qry."BBBB";
    $result = mysql_query($qry)or die (mysql_error());
    $riga = mysql_fetch_assoc($result);
    echo "<center> <h1> <br> Benvenuto ".$riga['nome']."!";
    }
    else
    {
    if(isset($_POST['log']))
    {
    error_reporting(E_ALL ^ E_NOTICE);

        $username = $_POST['username'];
        $password = mysql_real_escape_string(md5($_POST['password']));
    
                $result = mysql_query("SELECT * FROM utenti  WHERE username = '$username' AND password = '$password' ")or die (mysql_error());
                $controllo = mysql_num_rows($result);
                if($controllo > 0)
                {$_SESSION['utente'] = $username;
            header("location:benvenuto.php");
        }
        else
        {
                        echo " <h1> <center> <br> La password e/o lo username sono sbagliati. Riprovare grazie !!! </center> </h1>";
        }
    }
    
    else{
    
        echo "<form action='' method='POST'>
    
                <center>
                <br> <br> <br> <br>
    
        Username: <input type='text' name='username'> <br> <br>
        Password: <input type='password' name='password'> <br> <br>
        <input type='submit' name='log' value='Loggati'>
                <input type='submit' name='reg' value='Registrati'>
                </center>
                </form>";
    }
    

    }
    $userreg = mysql_num_rows(mysql_query("SELECT * FROM utenti"));
    echo "<b> <br> <br>".$userreg."</b> utenti registrati</div>";
    if(isset($_POST['reg']))
    {
    header("Location:iscrizione.php");
    }
    ?>

    [/PHP]

    Le prime due ricghe, richiama la visualizzazione della data e la connessione al db. Queste due righe sono riportate in ogni file php creato.

    Questo è il file paginaprotetta.php

    [PHP]

    <?php

    session_start();

    session_regenerate_id(true);

    // Controllo accesso

    if(isset($_SESSION['utente'])) {

    $nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
    echo "<h1> <br> <center>";
    

    // echo "Ciao ".$_SESSION['utente']."!";
    echo "</h1> </br> </center>";

    header('location:login.php');
    exit;
    }
    else
    {
    //echo "Benvenuto ".$_SESSION['$login'];
    }

    ?>
    [/PHP]

    Ed infine c'è la pagina di benvenuto.php che dovrebbe non solo visualizzare benvenuto pincopallino quando ti connetti e questo la, ma anche il tasto logout (questo non me lo visualizza).

    Ecco il codice benvenuto.php

    [PHP]

    <?php
    require_once 'paginaprotetta.php';

    if(!isset($_POST['esci'])){

    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <center>
    <form action= '' method="POST">

       <input type="submit" name="esci" value="Logout" >
    

    </form>
    </head>
    <body>
    <?php

        }else{
     session_start();
    

    $_SESSION = array();

    session_destroy();

    echo "<center> <h1> Addio !!!! Alla prossima </center> </h1>";

    } ?>
    </body>
    </html>

    [/PHP]

    Ovviamente, se tolgo il richiamo sopra in alto ossia quetso: require_once 'paginaprotetta.php'; il tasto logout si vede, ma il benvenuto no. Dove sbaglio ???? Spero in un tuo aiuto al più presto grazie. Sono rimasto bloccato per sta cosa.


  • User

    sul tuo codice postato ci sono alcuni gravi errori di vulnerabilità

    pulisci bene la variabile $username perchè permette di fare attacchi di tipo sql injection

    per quanto riguarda il tasto logout

    prova a correggere questo:

    [HTML]<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <center>
    <form action= '' method="POST">

       <input type="submit" name="esci" value="Logout" >
    

    </form>
    </head>
    <body>[/HTML]

    con questo

    [HTML]<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    <center>
    <form action= '' method="POST">

       <input type="submit" name="esci" value="Logout" >
    

    </form>[/HTML]