Page 1 sur 1

Privilèges utilisateurs

Posté : 28 sept. 2013, 10:40
par Louisss
Bonjour.

Je cherche à sécuriser une base de données MySQL qui alimentera un site à mettre bientôt en ligne. Pour cela, j'essaie de mettre en place un système basé sur plusieurs utilisateurs ayant chacun un seul privilège de manière à les séparer et, ainsi, à empêcher le détournement de mes requêtes.
Je me fais donc 4 utilisateurs :
- 1 pour les SELECT
- 1 pour les INSERT
- 1 pour les UPDATE
- 1 pour les DELETE

Pour tester ça, j'ouvre une connexion à ma bdd avec l'utilisateur "spécialisé INSERT" dans une page qui fait principalement des SELECT. Et là, surprise, la page s'ouvre normalement et les requêtes s'exécutent parfaitement.
J'ai pourtant bien supprimer tous les privilèges sauf INSERT pour cet utilisateur, alors comment se fait-il qu'il parvienne à exécuter des SELECT ?

Merci d'avance
Cordialement

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 11:05
par moogli
Salut,


Je ne vois pas l'intérêt d'avoir autant d'utilisateur.
Si tu protège correctement tes données il n'y a pas aucun risque.
Au pire deux un pour le select et un pour le crud.

Sinon sans le code on ne peu que supposer que :
- tu n'utilise pas le bon utilisateur
- l'utilisateur est la, configuré
- il y a un mélange dans le code qui fait que tu n'utilise pas le mon utilisateur.


@+

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 12:46
par Louisss
Bonjour Moogli.

Mes données, je pense les protéger assez bien mais comme il est difficile d'en être sûr à 100%, je préfère ajouter cette protection là. Bon effectivement,il est peut-être excessif d'avoir 3 utilisateurs différents pour les requêtes d'action, mais si je résous mon problème, je pourrai reconsidérer ça.
Par contre, en ce qui concerne cet utilisateur "réservé insert" qui parvient à faire des select, je ne pense pas me tromper car l'ouverture de la connexion se fait une fois pour toute au début du fichier php, donc facile à vérifier et non, je ne me suis pas trompé d'utilisateur.

Du coup, je penche pour une erreur de configuration ou une incompréhension des privilèges : est-ce que le privilège "insert_priv" inclut le "select" ?
Est-ce correct de n'attribuer que le privilège "insert_priv" à un utilisateur ?

Cordialement

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 15:42
par moogli
"insert_priv" je ne vois.
comment as tu paramétré ton utilisateur ?

je te conseil la méthode suivantes :
-- supprimer tous les droits 
REVOKE all on `dummy`.* FROM 'dummy'@'localhost';

-- ajouter l'insert
GRANT insert ON `dummy`.* TO 'dummy'@'localhost';
FLUSH PRIVILEGES;
l'utilisateur et la base s'appel dummy ;)

tu peux le faire pour chaque droit.

pour finir un peu de doc http://dev.mysql.com/doc/refman/5.0/fr/grant.html

Le revoke est a faire avant pour être certain qu'il n'y ai pas de droit traine.


@+

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 16:40
par Louisss
J'ai paramétré mon utilisateur via l'interface de phpMyAdmin.
insert_priv, c'est el champ de la table MySQL db qui correspond au privilège "insert".

Je vais essayer ta méthode

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 16:46
par Louisss
Ok, j'ai utilisé tes 2 requêtes : même résultat.
J'ai réutilisé uniquement la première pour lui virer tous ses privilèges : cette fois-ci, les requêtes ne sont plus exécutées, ça redevient logique. Mais dès que je lui redonne le privilège 'insert', tous les select fonctionnent à nouveau.
Qu'est-ce qui m'échappe ???

Re: Privilèges utilisateurs

Posté : 28 sept. 2013, 17:01
par Louisss
Ok, j'ai trouvé mon erreur : une instruction d'ouverture d'une connexion avec l'utilisateur "select" était toujours présente, dans un fichier inséré par un include.
Maintenant que je l'ai viré, ça fonctionne bien mieux...

Re: [RESOLU] Privilèges utilisateurs

Posté : 29 sept. 2013, 13:09
par moogli
Tu m'étonne :mrgreen:
J'adore avoir raison :twisted:

Pour info utiliser Grant revoke c'est quand même plus simple ;)

@+