Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2007, 16h25   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Par défaut [Sécurité] Sécurité sur une page admin

Bonjour,

je voulais savoir si avec une simple verification de la présence d'une variable session comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
session_start();
 
if(isset($_SESSION['username']) && isset ($_SESSION['password']))
 
{ ici acces a l administration du site ...
}
 
else {
 
	 echo 'Vous n êtes pas autorisé à accéder à cette page.';
 
	 }
 
?>
c'était suffisant niveau sécurité.

Merci
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 16h39   #2
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Je te conseil de lire cette documentation disponible sur php.net .

[Edit] : Ce que tu nous montres est très simple, et peut être facilement détourné. Il faut beaucoup plus de rigueur et ne pas oublier session_register();

See you
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 17h48   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Merci pour ta réponse, j'ai essayé autre chose
est-ce mieux comme ceci? :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?
 
session_start();
 
 
		// Connexion à la base de données		
		$db = mysql_connect ('localhost', 'root', '');
		mysql_select_db ('mysql',$db);
		$req = "SELECT username, password FROM users WHERE username = '".$_SESSION['username']."' ";
		$res = mysql_query ($req) or die ('Erreur :'.mysql_error());
		$data = mysql_fetch_array($res);
 
if ($_SESSION['username'] == $data['username'] && $_SESSION['password'] == $data['password']) 
	{
	echo 'Bienvenue <span style="color: 0000FF;">' . $_SESSION['username'] . '</span><br><br>';
	echo '<a href="admin.php?manage=news">Gérer les news</a><br>';
	echo '<a href="acces.php?acces=manage">Gérer les droits d\'accès</a><br>';
	echo '<a href="admin.php?manage=gallery">Gérer les images</a><br><br>';
	echo '<a href="logout.php">Logout</a><br><br>';
	}
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
else {
	 echo '<br><br><br>';
	 echo '<font size="2" face="Verdana"><center>Vous n\'êtes pas autorisé à accéder à cette page.</center></font>'.'<br>';
	 echo '<font size="2" face="Verdana"><center><a href="Untitled-1.php">Retour</a></center></font>';
	 }
?>
merci
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 18h00   #4
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Le problème dans ton script, c'est que n'importe qui peut arriver à administrer (au passage, il faut que sur toutes tes pages d'administration tu re-vérifies que la personne soit bien un admin).

Il faut pour éviter cela ajouter une table `grade` (ou autre) avec comme niveau, par exemple :
0 -> Banni
1 -> Simple membre
2 -> Modérateur
3 -> Administrateur

et tu vérifies que la personne soit bien un administrateur. (Tu peux utiliser un tableau pour ça)

See you.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 20h34   #5
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par SpiritOfDoc
Le problème dans ton script, c'est que n'importe qui peut arriver à administrer (au passage, il faut que sur toutes tes pages d'administration tu re-vérifies que la personne soit bien un admin).

Il faut pour éviter cela ajouter une table `grade` (ou autre) avec comme niveau, par exemple :
0 -> Banni
1 -> Simple membre
2 -> Modérateur
3 -> Administrateur

et tu vérifies que la personne soit bien un administrateur. (Tu peux utiliser un tableau pour ça)

See you.

yop,

mais en fait j'ai une table "users" qui contient uniquement des administrateurs.

ce n'est pas une zone de login pour membres, c'est justes pour des administrateurs.

J'ai l'impression que tu consideres ca comme un truc login pour membres , administrateurs & cie.

Je me trompe?

Merci
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2007, 22h08   #6
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
En effet, je pensais que tu avais une seule et même table (je suis pas devin, pas encore :')).

Fait un session_register('nom'); et ensuite fait une verification du style :
Code :
1
2
3
4
5
6
7
if(!session_is_registered('nom')) {
 $_SESSION = array();
 session_unset(); 
 session_destroy();
 header('location: index.php');
 die(); 
}
Enfin, ça c'est de tête ... donc j'suis pas sur à 100% que cela fonctionne.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 11h34   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Attention : les fonctions session_register, session_unregister, session_is_registered et session_unset sont dépréciées. Il convient donc de les remplacer :
Code :
1
2
3
4
5
6
$var = 'foo';
session_register('var');
 
# devient
 
$_SESSION['var'] = 'foo';
Code :
1
2
3
4
5
if (session_is_registered('var')) {
 
# devient
 
if (isset($_SESSION['var'])) {
Code :
1
2
3
4
5
session_unset('var');
 
# devient
 
unset($_SESSION['var']);
Pour de plus amples informations, voir le tutoriel dédié aux sessions.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 16h27   #8
Invité de passage
 
Inscription : janvier 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 16
Points : 4
Points : 4
ok, merci à vous deux.
orbitalxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h30.


 
 
 
 
Partenaires

Hébergement Web