sicurezza script login

  • Creatore Discussione Creatore Discussione Fabio90
  • Data di inizio Data di inizio

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Buonasera forum,
causa eccessivo utilizzo di joomla/wordpress dubito fortemente che lo script che sono andato a creare sia sicuro :cool:
Cosa posso fare per migliorare la sicurezza di questo script?

Grazie
PHP:
else {
	   session_start(); //inizio la sessione
	   include 'inc/variabili.php';
	   include 'inc/db_conn.php';
	   // recupero il nome e la password inseriti dall'utente
	   $email = trim($_POST['email']);
	   $password = trim($_POST['password']);
	   
	   // elimino slash php
	   if(get_magic_quotes_gpc()) {
	   		$email = stripslashes($email);
	   		$password = stripslashes($password);
	   }
	   
	   // verifico la presenza dei campi obbligatori
	    if(!$email || !$password) {
			echo "non hai inserito l'email o la password";
		exit;
		}
	   
		$email= mysql_real_escape_string($_POST['email']); //faccio l'escape dei caratteri dannosi
		$password= mysql_real_escape_string($_POST['password']); //sha1 cifra la password anche qui 
			   
		$query = "SELECT * FROM cms_savio_users WHERE email = '$email' AND password = '$password' ";
		$risultato = mysql_query($query, $conn) or die (mysql_error());
		$row=mysql_fetch_array($risultato); 
		 
		/*Prelevo l'identificativo dell'utente */
		$cod=$row['email'];
		 
		/* Effettuo il controllo */
		if ($cod == NULL) $trovato = 0 ;
		else $trovato = 1; 
		 
		/* Username e password corrette */
		if($trovato === 1) {
		 
		 /*Registro la sessione*/
		 
		  $_SESSION["autorizzato"] = "yes";
		  $_SESSION['email'] = $row['email'];
		  $_SESSION['password'] = $row['password'];
		 
		  /*Registro il codice dell'utente*/
		  $_SESSION['cod'] = $cod;
		 
		 /*Redirect alla pagina riservata*/
		   echo '<script language=javascript>document.location.href="protetta.php"</script>';
		 
		} else {
		 
		/*Username e password errati, redirect alla pagina di login*/
		 echo '<script language=javascript>document.location.href="login.php"</script>';
		 
		}
		
		}//else
 
ciao
io verificherei anche l'indirizzo
PHP:
<?php
//.....
// verifico la presenza dei campi obbligatori
if(!$email || !$password) {
	echo "non hai inserito l'email o la password";
	exit;
}
$email=filter_var($email, FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
	echo "email non corretta";
}
//.......
?>

poi non userei
PHP:
echo '<script language=javascript>document.location.href="protetta.php"</script>';
qualsisi persona può leggere il nome della pagina protetta e non è bene
potresti usare
PHP:
<?php
//....
header('location: protetta.php');
//.....
?>
poi dovresti codificare la password come minimo con md5
ultima, ma non meno importante, abbandona le vecchie istruzioni mysql deprecate e passa a mysqli
 
Ok ti ringrazio molto. il punto è che in registrazione genero una password random che poi invio per mail.
Come faccio a inviare la password non sha1 per mail e criptarla invece nel DB?
 
ciao
la generi e la invii
poi la codifichi e la salvi nel db
poi quando uno si logga inserisce la pass
la codifichi e la confronti nel db.
ti schematizzo
PHP:
<?php
//....
$passw_random=generatore_di_pass();//password generata casualmente
//la invii all'utente con mailto() o meglio usando la classe phpmailler, poi
$pass=sha1($passw_random);
$query="INSERT cms_savio_users(email, password) VALUES('$email','$pass')";
//....
?>
poi quando l'utente si logga, immagino che avrai un form di log
PHP:
<?php
//.....
$pass=sha1($_POST['password']);
//avendola codificata non serve il mysql_real_escape_string sulla password
$query = "SELECT * FROM cms_savio_users WHERE email = '$email' AND password = '$pass'";
//....
?>
 

Discussioni simili