Salve a tutti, avrei una cosetta da sottoporre alla vostra attenzione perchè avrei bisogno di un consiglio.
Dovrei realizzare una sorta di area riservata per gestire il pannello di controllo di un sito in php.
Attualmente (un progetto universitario) ho realizzato un login utilizzando le sessioni...solo che non credo sia "molto sicuro". Vi mostro il codice:
codice:
<title>Accedi</title>
ACCESSO AMMINISTRATORI
<form name="login" action="funzioni/controlla.php" method="POST">
<table width="200" border="0">
<tr>
<td>Username</td>
<td><input type="text" name="username" value="">
</td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" value="">
</td>
</tr>
</table>
<input type="submit" value="Login">
</form>
Questo è il form per l'accesso.
Codice PHP:
// Collegamento al database.
mysql_connect("$host", "$username", "$password")or die("Errore di connessione");
mysql_select_db("$db_name")or die("Non posso selezionare il database");
$user=$_POST['username'];
$pass=$_POST['password'];
$sql="SELECT * FROM amministratori WHERE username='$user' and password='$pass'";
$result=mysql_query($sql);
// Mysql_num_row effettua il conteggio dei record
$count=mysql_num_rows($result);
if($count==1){
session_start(); //apro la sessione di amministratore
$_SESSION['login_admin'] = "ok";
header("location: ../index.php");
} else { //se il login non va a buon fine torno alla pagina di accesso amministratore
header("Location: ../form.htm");
echo "Riprova";
}
?>
Questo il codice della pagina di controllo...dopo aver fatto la connessione al db controlla nella tabella amministratori se il record corrispondente esiste ed è unico, a quel punto fa partire una sessione login_admin e setta su di essa il valore "ok".
Ogni pagina da proteggere sarà poi fornita di un'incluzione di questo codice:
Codice PHP:
<? //pagina che verifica la presenza della sessione aperta
session_start();
if ($_SESSION['login_admin'] != "ok") {
header("Location: form.htm"); //se la sessione di admin non è stata aperta mi reindirizza automaticamente al form di collegamento
}
?>
A questo punto sorge la mia curiosità.
In questo caso la sessione viene aperta e su di essa settato un valore "ok", ogni pagina controlla se il valore della sessione è "ok" (ma potrebbe essere anche "carolina" o qualsiasi altra cosa) e permette la navigazione nell'area riservata.
Ma...se volessi che questa sessione mantenesse su di se un valore random che cambia ad ogni accesso?
Oppure...avevo pensato di settare la variabile di sessione con una stringa criptata (magari md5) contenente $user+$password in modo da criptarne il valore...
Voi cosa ne pensate?
Come potrei implementare una sorta di login "sicuro"?
A me la soluzione che ho utilizzato per il progetto didattico onestamente non mi piace moltissimo...secondo me sarebbe molto semplice da bypassare...
Qualche consiglio!?
Grazie mille!!