sessioni sicure?

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?
 

LuigiDonato

Utente Attivo
20 Ago 2015
63
0
6
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
 

marino51

Utente Attivo
28 Feb 2013
2.600
132
63
Lombardia
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/project-stories/digest-flashback-targeting-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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
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
}
?>
 

akp

Utente Attivo
8 Giu 2015
133
0
16
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?
 
Autore Discussioni simili Forum Risposte Data
AC1 PHP 16
S PHP 3
B PHP 3
A PHP 3
M PHP 25