sessioni sicure?

  • Creatore Discussione Creatore Discussione akp
  • Data di inizio Data di inizio

akp

Utente Attivo
8 Giu 2015
133
0
16
buonasera, nel sito che sto sviluppando utilizzo le sessioni in questo modo :
pagina login :
PHP:
//dopo aver inserito i dati email e password creo la sessione per l'utente

$row = mysqli_fetch_array($result,MYSQL_ASSOC);
$nome = $row['nome'];
$email = $row['email'];
$_SESSION['nome'] = $nome;
$_SESSION['email'] = $email;

e nelle pagine in cui è obbligatorio essere loggati scrivo(in testa alla pagina) :
PHP:
session_start();
 $nome=$_SESSION['nome'];
 $email=$_SESSION['email'];
if(!$nome)navbar();
  else navbarlog();

secondo voi utilazzarle in questo modo è corretto e sicuro?
potrei aumentare la sicurezza in qualche altra maniera?
 
Mi ritrovo bel tuo stesso dilemma..
Sicuramente è cosa sana non passare la sessionID nell'url, per il resto, mi metto anche io in cosa per la risposta di qualcuno con più esperienza :)
Consideralo un up :)

Inviato dal mio Blade S6 utilizzando Tapatalk
 
il tema è molto ampio, difficile trattarlo in una discussione, vi posto due link, assolutamente non esaustivi
ma dal primo si possono ottenere buone indicazioni
http://www.mitre.org/publications/p...ting-the-25-most-dangerous-programming-errors

dal secondo un po' di pratica
http://forum.mrwebmaster.it/php/40195-gestire-password-utenti-registrati-quale-codifica.html

ho approfondito abbastanza l'argomento, ed ho cercato con la maggior semplicità possibile, di attivare i suggerimenti nel codice sviluppato

mi sono accorto anche della necessità di "criticare" il proprio codice perché spesso si danno per scontate situazioni non proprio sicure
 
ciao
è uno dei metodi più usati, anche se la sicurezza assoluta non esiste e generalmente va bene per livelli di sicurezza usuali
comunque una cosa dovresti creare le sessioni solo se il log è ok
PHP:
<?php
session_start();
$nome="";//nome non trovato
$_SESSION['nome']=$nome;
if(isset($_SESSION['nome'])){
	echo "la sessione esiste";
}else{
	echo "la sessione non esiste";
}
//output 'la sessione esiste'
?>
quindi per prima cosa (se non l'hai fatto)
PHP:
<?php
if(mysqli_num_rows($result)==1)){
	//crei le sessioni solo se log ok
	$row = mysqli_fetch_array($result,MYSQL_ASSOC);
	$nome = $row['nome'];
	$email = $row['email'];
	$_SESSION['nome'] = $nome;
	$_SESSION['email'] = $email;
	// e mandi alla pagina riservata
}else{
	//log ko
	//per sicurezza, se vuoi distruggi, le eventuali sessioni esistenti
	$_SESSION=array();
	header('location=dove_vuoi.php');
	exit();
}
?>
poi nella riservata
PHP:
<?php
session_start();
if(!isset($_SESSION['nome']) || !isset($_SESSION['email'])){
	//le sessioni non esitono
	header('location=dove_vuoi.php');
	exit();
}else{
	echo "ciao ".$_SESSION['nome'];
	//e tutto il resto
}
?>
 
ciao
è uno dei metodi più usati, anche se la sicurezza assoluta non esiste e generalmente va bene per livelli di sicurezza usuali
comunque una cosa dovresti creare le sessioni solo se il log è ok
PHP:
<?php
session_start();
$nome="";//nome non trovato
$_SESSION['nome']=$nome;
if(isset($_SESSION['nome'])){
	echo "la sessione esiste";
}else{
	echo "la sessione non esiste";
}
//output 'la sessione esiste'
?>
quindi per prima cosa (se non l'hai fatto)
PHP:
<?php
if(mysqli_num_rows($result)==1)){
	//crei le sessioni solo se log ok
	$row = mysqli_fetch_array($result,MYSQL_ASSOC);
	$nome = $row['nome'];
	$email = $row['email'];
	$_SESSION['nome'] = $nome;
	$_SESSION['email'] = $email;
	// e mandi alla pagina riservata
}else{
	//log ko
	//per sicurezza, se vuoi distruggi, le eventuali sessioni esistenti
	$_SESSION=array();
	header('location=dove_vuoi.php');
	exit();
}
?>
poi nella riservata
PHP:
<?php
session_start();
if(!isset($_SESSION['nome']) || !isset($_SESSION['email'])){
	//le sessioni non esitono
	header('location=dove_vuoi.php');http://forum.mrwebmaster.it/newreply.php?do=newreply&p=172696&noquote=1
	exit();
}else{
	echo "ciao ".$_SESSION['nome'];
	//e tutto il resto
}
?>

grazie a tutti per le risposte.
Io ovviamente creo la sessione solo se il login va a buon fine.
In ogni pagina faccio un controllo se l'utente è loggato o meno perchè in base a ciò abbilito o disabilito funzionalità.
ho un informazione da chiederti, se volessi aggiungere come metodo di registrazione i social network dovrei sostituire le sessioni con i cookie?
 

Discussioni simili