Sapete spiegarmelo un po?
il seguente script chiede all'utente nome e password. Se si digitano "nomeutente" e "suapass" il login va a buon fine. In caso contrario la richiesta viene ripetuta per altre 2 volte e infine la login fallisce.
Vorrei capire:Codice PHP:<?php
$userpass[0]="nomeutente";
$pass="suapass";
$userpass[1]=md5($pass);
if(!(isset($_SERVER["PHP_AUTH_USER"]))
OR (empty($_SERVER["PHP_AUTH_PW"]))
OR ($_SERVER["PHP_AUTH_USER"] != $userpass[0])
OR (md5($_SERVER["PHP_AUTH_PW"]) != $userpass[1])) {
Header("WWW-Authenticate: Basic realm=\"Secure Login\"");
Header("HTTP/1.0 401 Unauthorized");
echo"Login Fallita";
}
else
echo "Login effettuata";
?>
1) i tre tentativi da chi sono impostati?
2) cosa fa l'istruzione Header("HTTP/1.0 401 Unauthorized")?
3) se l'utente riesce a "loggarsi" poi non si "slogga" + (riaccedendo alla pagina la login riesce senza nessuna richiesta); come si fa a "sloggarsi"?
4) a me pare che OR (empty($_SERVER["PHP_AUTH_PW"])) sia del tutto inutile, visto che c'è OR (md5($_SERVER["PHP_AUTH_PW"]) != $userpass[1])); per precauzione si potrebbe rifiutare una scelta di password vuota in sede di registrazione
5) premesso che conserverei le password in mysql, il sistema sarebbe sicuro o si può far di meglio?
6) per conto mio l'uso di md5 è del tutto superfluo (potrebbe essere utile se conservassi le password in un file, ma se le metto nel db serve crittografarle?)
