[PHP] Revisione codice per registrazione

Gericx

Nuovo Utente
24 Ott 2018
6
0
1
Salve, mi sto esercitando con il lignuaggio php, ho creato questo codice per la registrazione di un account e volevo un pò di pareri da chi è più esperto nel campo.
Vorrei sapere se va bene il codice che ho creato e cosa dovrei aggiungere per migliorarlo anche in ambito di sicurezza.
PHP:
<?php
session_start();

include("db_conn.php");

$email=$_POST['email'];
$password=$_POST['password'];

$email=filter_var($email,FILTER_SANITIZE_EMAIL);
$password=filter_var($password,FILTER_SANITIZE_STRING);

//Verifico che i campi non siano vuoti

if($email==null||$password==null){
    header("Location:home.html");
    exit();
}else{
    
    //crypto la password
    
    $pass_crypt=password_hash($password,PASSWORD_DEFAULT);
    
    //Verifico se l'email già esiste
    
    $seleziona="SELECT email FROM utenti WHERE email='$email'";
    $query=mysqli_query($conn,$seleziona);
    $row=mysqli_num_rows($query);
    
    if($row==0){
    
    $query_inserisci="INSERT INTO utenti (email, password) VALUES ('$email', '$pass_crypt')";
    mysqli_query($conn,$query_inserisci);
    
    $_SESSION['user']=$email;
    $_SESSION['password']=$pass_crypt;
    
    }else{
        header("Location:home.html");
        exit();
    }
}
?>
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
Dopo analisi il risultato:
La riga 32 di index.php richiama una query SQL creata utilizzando l'input proveniente da una fonte non attendibile. Questa chiamata potrebbe consentire a un utente malintenzionato di modificare il significato dell'istruzione o di eseguire comandi SQL arbitrari.
 

Gericx

Nuovo Utente
24 Ott 2018
6
0
1
Quindi dovrei inserire la connessione al database direttamente in questo file per avere una maggiore sicurezza?
 

Gericx

Nuovo Utente
24 Ott 2018
6
0
1
Grazie darò un'occhiata, volevo sapere anche un'altra cosa, per criptare la password è meglio utilizzare password_hash, oppure md5?
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
nessuno dei due... Utilizza algoritmi almeno a 256 aggiungendo dei salt in posizione randomica.
Evita lo store della password in md5 e sha1 -> Weak crypt.