Comment gérer le tout premier utilisateur (admin)?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment gérer le tout premier utilisateur (admin)?

par Tatiana » 02 oct. 2006, 22:15

Tu as tout à fait raison, Henri. C'est ce que j'ai réalisé en lisant vos réponses.

Finalement, j'ai opté pour ne pas encrypter. Plus tard, peut-être, si l'application devient plus "populaire" (elle ne le sera pas dans les premiers temps), je penserai à offrir la possibilité d'encrypter le mot de passe, et alors j'offrirai une option pour le modifier automatiquement.

Merci! :)

par Henri » 30 sept. 2006, 12:03

Tes souhaits sont donc contradictoires puisque tu veux
d'un côté, crypter pour assurer la confidentialité
de l'autre, ne pas t'embêter lorsque les utilisateurs perdent leur mot de passe (cas plus fréquent qu'on ne l'imagine)

On peut discuter pendant des heures sur la sécurité des mots de passe. Je comprends ton objection sur le fait que les utilisateurs ont le même mot de passe pour plusieurs applications, mais c'est une situation anormale (bien que courante) : le crack d'une application compromet la sécurité de toutes les applis.

Tu as également la solution d'imposer le mot de passe de ton application avec une combinaison du nom, du prénom et d'un nombre aléatoire. Nous le faisons pour une application Intranet d'une cinquantaine de personnes et il n'y a aucun souci : les gens acceptent que le mot de passe leur soit imposé.

par Tatiana » 28 sept. 2006, 19:27

Je n'aurai pas beaucoup d'usagers (probablement 30 max) et je doute que ceux-ci oublieront leur mot de passe, mais je veux surtout ne pas être mal prise au cas où ça arriverait.

C'est sûr que je ne suis peut-être pas obligée de crypter, mais en fait je pensais le faire plus pour la confidentialité que pour la sécurité. Je suis honnête et je ne me mettrai pas à vérifier si je peux entrer dans leur compte parce qu'ils ont pris le même mot de passe pour plusieurs applications, mais si quelqu'un faisait une application du genre, moi, comme usagère, j'apprécierais que les mots de passe soient cachés. :) Mais j'ai peut-être de trop grands principes! :roll: :lol:

Merci!

par Henri » 28 sept. 2006, 11:39

Point 1 : tu n'as d'autre solution que d'inscrire le premier utilisateur "manuellement".
Soit en utilisant Phpmyadmin par exemple et en insérant une ligne, soit en écrivant un script qui ne sera utilisé qu'une seule fois.
Concernant le mot de passe, tu dois avoir une page qui permet de changer le mot de passe. Quand tu crées ton user manuellement, tu le fais sans mot de passe, puis tu vas sur cette page et tu le modifies.

N'oublie pas que faire des programmes informatiques, c'est automatiser des tâches répétitives. Pour une action qui n'est lancée qu'une seule fois, il n'y a -- à la limite -- pas besoin d'écrire un traitement automatisé.

Concernant la récupération des mots de passe : à toi de te poser la question du niveau de sécurité que tu veux avoir : est-ce qu'il est bien nécessaire de crypter les mots de passe ? Est-ce que tu gères des comptes bancaires ou est-ce que le mot de passe sert uniquement à identifier un utilisateur pour pouvoir lui dire "Bonjour Monsieur Dupont" ?

Sache que la principale sécurité d'un mot de passe, ce n'est pas le cryptage ou pas dans une base de données qui est normalement inaccessible (de toute façon, si quelqu'un arrive jusqu'à ta base MySQL, il a déjà craqué tes sécurités, il n'en aura rien à faire que les mots de passe soient cryptés ou pas, il pourra se créer un accès sans souci et même récupérer l'intégralité de la base pour l'étudier tranquillement par ailleurs), mais c'est :

1) la longueur du mot de passe
2) le fait que les mots de passe mélangent des lettres et des chiffres
3) le fait que le mot de passe ne soit pas un nom commun ou une date de naissance, mais plutôt une suite aléatoire de symboles.
4) le fait que les utilisateurs retiennent leur mot de passe sans être obligés de l'écrire sur un post-it collé sur l'écran
Les points 3 et 4 étant bien évidemment en totale contradiction

par Cyrano » 28 sept. 2006, 10:29

Dans ce cas, tu n'as pas à te préoccuper de l'accès à MySQL : ton application est configurée pour se connecter en utilisant tes propres paramètres utilisateur/mot de passe pour se connecter.

Si maintenant certaines informations ne peuvent être accessible de façon limitée selon les utilisateurs de l'application, il te faut prévoir dans le schéma des colonnes indiquant le niveau d'accès de façon à ce que la bonne information soit extraite pour le bon internaute identifié et que les autres ne puissent pas y avoir accès.

Représentes-toi la structure générale :
- l'internaute se connecte à ton application, pas au delà;
- ton application se connecte au besoin à MySQL;
Mais en aucun cas un internaute ne peut se connecter à MySQL directement, il doit passer par l'application. à toi donc de gérer les accès à l'application dans ton développement.

par Tatiana » 28 sept. 2006, 10:21

Merci, mais je pense que je n'étais pas claire, ou alors carrément pas dans le bon forum (j'hésitais): je parlais des utilisateurs de mon application web et non pas directement de la BD.

par Cyrano » 28 sept. 2006, 08:05

Je vais te donner une réponse par rapport à MySQL : à l'installation, il y a au départ un administrateur nommé "root" avec ou sans mot de passe selon la procédure d'installation suivie, la prudence exigeant de mettre un mot de passe. Cet utilisteur particulier a tous les droits incluant celui de créer de nouveaux utilisateurs avec des restrictions d'accès plus ou moins importantes. Et tu n'as pas besoin de hacher toi-même les mots de passe des nouveaux utilisateurs avec md5() ou quoique ce soit d'autre, MySQL a son propre algorithme de hachage des mots de passe.

Jette un coup d'oeil dans la doc sur la gestion des utilisateurs.

Comment gérer le tout premier utilisateur (admin)?

par Tatiana » 28 sept. 2006, 07:58

:oops: :oops: :oops:

J'ai une question qui me semble tellement bête... :lol: Pourtant, il me semble que vous avez dû tous y faire face, mais j'ignore pourquoi, je n'ai pas trouvé de conseils sur le sujet nulle part dans mes recherches, alors je me demande si ce n'est pas moi qui voit des problèmes où il n'y en a pas.

Je veux crypter mes mots de passe. Je n'ai pas essayé de voir comment ça fonctionnait mais je crois avoir compris le principe: je prends "motdepasse", j'applique une fonction comme mod5 dessus et j'enregistre cette valeur dans la base de données.

Or, à moins que moi (l'administrateur) ne décide de donner des pouvoirs particuliers à un usager, il sera un utilisateur "régulier". Évidemment, je ne prévois pas permettre à mes utilisateurs de décider eux-mêmes d'être administrateurs. :roll: Ma question est donc: qui va me "nommer" administrateur? :lol:

Je me demandais comment vous gériez la situation. J'avais pensé à trois solutions potentielles:

1- je m'inscris comme usagère "normale", puis je vais modifier mon statut en manuel dans ma base de données;

2- je crée un cas spécial dans mon script pour que le tout premier usager à s'enregistrer soit un administrateur;

3- je me fais un script bidon localement pour générer le charabia qui sera mon mot de passe dans la BD, que j'inscrirai manuellement en m'ajoutant moi-même comme entrée.

Est-ce que toutes ces solutions fonctionneraient? Et vous, comment réglez-vous la question?

Il y a autre chose aussi qui me tracasse. Je ne veux pas faire un site super évolué, donc je n'ai pas vraiment envie de me casser la tête pour créer une option "j'ai oublié mon mot de passe", avec envoi de courriel et réinitialisation du mot de passe. :roll: Mais si jamais par hasard quelqu'un oubliait son mot de passe, comment gérer la situation? Avec ma solution #3 pour retrouver ledit mot de passe? Parce que si ça fonctionne, il me semble que n'importe qui pourrait trouver un mot de passe en essayant les quelques fonctions PHP qui permettent d'encoder les chaînes de caractères... :?: