Page 1 sur 2
Comment protéger le compte administrateur ?
Posté : 04 janv. 2009, 23:02
par Tohru222
Bonjour,
Je fais mon site en php.
pour la sécurité, j'ai crypté le mot de passe des comptes utilisateurs avec md5.
mais en fait, un de ces comptes utilisateur est l'administrateur. (j'ai fait un champs dans ma table utilisateur qui est coché pour le compte administrateur et non coché pour tous les autres).
on m'a dit qu'il ne faut pas faire comme ça. qu'il faut utiliser un fichier ou je ne sais quoi...
comment avez vous fait vous ?
merci
Re: Comment protéger le compte administrateur ?
Posté : 05 janv. 2009, 07:59
par @rthur
on m'a dit qu'il ne faut pas faire comme ça. qu'il faut utiliser un fichier ou je ne sais quoi...
Qui te l'a dit? et pourquoi ne poses-tu pas la question directement à la personne qui te l'a dit?
Pour ma part, je pense que ta façon de faire est correcte, le seul bémol est que je te recommande d'utiliser du sha1 plutôt que du md5.
Le sha1 s'utilise exactement de la même façon mais est plus sécurisé que le md5 :
http://fr.php.net/sha1
Posté : 05 janv. 2009, 12:31
par Berzemus
Et penser à assainir tout ce qui rentre dans la DB, c'est plus important que de se prendre la tête sur le compte administrateur, je pense.
Posté : 05 janv. 2009, 20:47
par AB
Y'a de nombreuses façons de faire et la tienne en est une.
Peut être que la personne qui t'a dit de faire autrement fait une authentification différente pour les visiteurs et l'administrateur. Cela permet d'optimiser la table visiteurs en supprimant le champ 'admin' devenu inutile et l'authentification des administrateurs se fait alors à partir d'une autre table ou d'un fichier texte.
D'un autre côté tu peux aussi te passer de faire une case "on-off" pour l'administrateur s'il n'y en a qu'un ou alors plusieurs qui ont les mêmes droits, tout en utilisant qu'une table : lors de l'authentification je suppose que tu récupères le login en même temps que le pass et le login doit être unique. Donc il te suffit de faire un tableau des login autorisés pour l'administration.
Posté : 06 janv. 2009, 00:15
par Tohru222
salut,
Merci @rthur, j'ai changer mon md5 pour sha1.
Ben en fait je sais qu'il faut crypter le mot de passe au cas ou kk1 arrive à entrer dans la base de données et piquer les comptes utilisateurs. c'est pas ça ? Car si kk1 peut entrer dans la base, il peut alors savoir quel(s) compte(s) sert pour l'administration et ainsi s'en servir pour mettre le site à plat.....
Berzemus, tu entends quoi par : "penser à assainir tout ce qui rentre dans la DB". celà veut dire qu'il faut crypter tout ?
faire un tableau de login ça peut êter pas mal. histoire de protéger si kk1 peut entrer dans la base de données.....
comme j'ai fait, c kler que c le plus simple, mais bon assez protégé, là est la question....
Posté : 06 janv. 2009, 16:46
par edison1986
Bonjour,
Crypter les mots de passes est plutôt pour éviter que quelqu'un puisse utiliser ces informations, car je pense que tu stocks l'E-mail de l'utilisateur dans ta base et vu que la plupart des gens utilisent le même mot de passe partout cela évite que tu utilise ces informations pour accéder a leur mail ou tout autre compte.
Si quelqu'un arrive à se connecter à ta base de donnée crypter les mots de passe ne l'empêchera pas de devenir administrateur par contre, car il lui suffira de se créer un compte avec le champ "admin" à 1.
Pour ma part lorsque je code une administration je la sépare du site dans un fichier "administration" par exemple. Ce "mini site" ne sert qu'à cela et est protégé par un fichier .htacces. c'est une autre méthode pas forcement meilleur, mais elle marche également.
Bonne journée.
Posté : 07 janv. 2009, 16:22
par Tohru222
Merci à tous pour vos réponses.
J'en ai reparlé à ma copine, qui m'a parlé des fichiers .htacces et de l'autre. (comme le site edison1986). mais je pense que celà ne me conviendra pas car je n'ai pas qu'une page "réservé admin" ou je peux faire apparaitre la pop-up demandant le mot de passE. j'ai aussi certains liens supllémentaires dans le menu.
j'pense que je ne vais pas me prendre la tête. j'v faire comme le dit AB.
J'vais faire un fichier texte contenant tous les mails autorisés à l'administration. Et lors de l'identification d'une personne, j'irai voir dans ce fichier, si sont mail est un mail d'admin ou non
en faisant ça c assez sécurisé ?
merci
Posté : 07 janv. 2009, 21:22
par AB
A partir du moment où tu as déclaré le champ login UNIQUE dans ta table (ou éventuellement comme une clé primaire) et qu'il y a l'authentification du login par le mot de passe... cela revient au même que de faire une authentification séparée.
Prends soin de mettre ton fichier qui inclus le tableau dans un répertoire protégé par un fichier .htaccess avec la mention deny from all. Avec cette précaution on ne pourra y avoir accès que depuis un script de ton site.
C'est minimaliste mais ça devrait le faire, par exemple
page tableau_admin.php
<?php
$tab_admin = array();
$tab_admin[] = 'toto';
$tab_admin[] = 'titi';
$tab_admin[] = 'tata';
?>
page d'authentification
//script d'authentification
//si authentification $login réussie
$tab_admin = array();
incude('chemin vers ta page tableau_admin.php');
if(in_array($login, $tab_admin, true)) {echo "c'est un admin";} else {echo "c'est un visiteur"}
Mais tu pourrais encore faire plus simple en faisant ton tableau directement dans ta page d'authentification. Tout dépend de la maintenance que tu aura à faire par la suite.
Posté : 08 janv. 2009, 16:25
par Tohru222
Merci j'v essayer
par contre je suis pas sur de la synthaxe de mon ficher ".htaccess". j'y ai mis "deny for all", mais bon du coup j'ai pas desoin de fichier .htpasswd puisque personne ne peut aller voir le fichier des logins autorisés.,
j'ai ecris :
AuthUserFile
http://localhost/avimag/adminJ/.htpasswd
AuthGroupFile /dev/null
AuthName "Veuillez vous identifier"
AuthType Basic
<Limit GET POST>
deny from all
</Limit>
Posté : 08 janv. 2009, 23:02
par AB
Puisque tu fais une authentification par bdd je suppose que tu protèges tes pages avec des variables de session que tu déclares à la suite de l'authentification (le principe est
ici) donc par besoin de .htpasswd.
Donc tu fais un répertoire en y intégrant un fichier .htaccess contenant uniquement la mention deny from all, pour protéger les fichiers inclus dans ce prépertoire d'un accès extérieur. Et dans ce même répertoire tu mets ton fichier tableau_admin.php (pour reprendre mon exemple).
Posté : 08 janv. 2009, 23:11
par Tohru222
Merci beaucoup AB de ton aide.
oui j'utilise bien des variable s de session une fois l'utilisateur identifié.
ok, donc dans mon .htaccess,
j'ecris juste cette ligne:
deny from all
dans mon dossier que je prrotège, j'ai fais comme tu m'as dit. j'y ai mis le .htaccess et le fichier.php contenant le tableau des login autorisé à l'administration
merci encore de ton aide,
julie
Posté : 08 janv. 2009, 23:21
par Tohru222
ah heu... j'viens de me rendre compte qu'en faisant celà si par hasard kk1 de mal-intentionné venait à connaitre le nom d'une page réservé à l'administrateur, et qu'il la tape directement dans l'adresse, il peut y accéder.
c possible qu'une personne puisse connaitre le nom des pages réservés à l'administrateur ?
car dans ce cas c toutes la pages réservés à l'administrateur que je dois mettre dans le .htaccess. et dans ce cas je peux me passer de .htpasswd ?
merci
Posté : 08 janv. 2009, 23:51
par dogmongo
Bonsoir
fais une page maitresse qui controle les admins , et à partir de celle-ci fais appel au autres par un include , en placant un test sur la variable session dans chacune d'elle.
variable session qui sera configuré sur la page maitresse

Posté : 09 janv. 2009, 02:58
par AB
ah heu... j'viens de me rendre compte qu'en faisant celà si par hasard kk1 de mal-intentionné venait à connaitre le nom d'une page réservé à l'administrateur, et qu'il la tape directement dans l'adresse, il peut y accéder.
c possible qu'une personne puisse connaitre le nom des pages réservés à l'administrateur ?
car dans ce cas c toutes la pages réservés à l'administrateur que je dois mettre dans le .htaccess. et dans ce cas je peux me passer de .htpasswd ?
merci
Ben c'est que tu as fais une erreur quelque part.
Si dans ta page d'identification tu as fait
//...
if(in_array($login, $tab_admin, true))
{
session_start();
$_SESSION['admin'] = $login;
}
else
{
session_start();
$_SESSION['visiteur'] = $login;
}
il suffit de protéger tes pages administrateur en incluant ces lignes au début de chacune d'entre elles
session_start();
if(!isset($_SESSION['admin'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}
et tes pages visiteurs authentifiés par
session_start();
if(!isset($_SESSION['visiteur'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}
T'as pas dû lire le tuto que j'ai mentionné plus haut dans son entier

Posté : 09 janv. 2009, 14:53
par Tohru222
impec t un crack !!!!!
c super ! en effet, sur ma page admin je n'avais aps pensé à testé la variable de session pour voir si c biern un admin ou non !!
super
je profite de ton savoir pour te poser un petite question tjrs en matière de sécurité pr un site.
à l'inscription, le site envoi un mail à la personne. Sur ce mail, il y a un lien qui rend actif son compte.
c un genre de forum que je fais. pr poster des messages, la personne doit être inscrite, son compte doit être validé et elle doit être identifiée.
est-ce obligatoire de faire la reconnaisannce de caractère comme le font quasiment tous les sites maintenant ? (la petite image où l'on doit recopier les caractère que l'on voit) ?
merci encore pr tout