[résolu] Sécurité base de données avec PHP

Sécurité base de données avec PHP [résolu] - PHP - Programmation

Marsh Posté le 19-01-2006 à 17:48:01    

Bonjour,
 
Petite question de sécurité lorsqu'un utilisateur doit pouvoir faire des insertions, suppressions dans des tables de la base de données (cas assez classique) :
 
On considère que l'utilisateur est déjà connecté au site avec tous les tests de sécurité préalables, et qu'on n'utilise pas le SSL.
 
Cas 1 : faut-il utiliser un compte préalablement crée par l'admin permettant les opérations sur la base de données ? le login et mot de passe de ce compte sont alors forcément écrits en clair sur le script PHP pour exécuter le mysql_connect (ou alors si y a un autre moyen je le connais pas).
 
Cas 2 : faut-il créer le compte de l'utilisateur dans la base de données, afin de l'utiliser par la suite ? Concrètement, le mysql_connect utilisera alors le login et le mot de passe de l'utilisateur pour se connecter et effectuer les opérations sur la base de données. Les opérations sont alors effectuées par le compte de l'utilisateur lui-même, et non par un compte crée spécialement par l'admin.  
Il n'y a pas de mot de passe stocké sur le script PHP, mais cela implique de stocker en clair le mot de passe de chaque utilisateur dans une variable de session durant sa connection (ou alors si y a un autre moyen je le connais pas).
 
Cas 3 : vous faites complètement différemment ?
 
Merci pour vos lumières  :jap:


Message édité par Djebel1 le 19-01-2006 à 18:34:30
Reply

Marsh Posté le 19-01-2006 à 17:48:01   

Reply

Marsh Posté le 19-01-2006 à 18:00:20    

Personellement, je trouve la solution numéro 2 complétement illusoire si le site est en inscription libre : tu auras vite fait d'avoir des disaines de comptes permettant l'accés à la base de donnée qui ne serviront peut être qu'une fois en un an.
Il ne faut pas oublier que chaque compte ouvert au niveau base de donnée est une porte entreouverte vers les données qu'elle contient.
En plus si t'as besoin d'accéder à une nouvelle colone d'une table, tu penses que l'administrateur de la base de donnée va être content de devoir modifier les droits d'accés de plusieurs milliers ou disaines de milliers de comptes utilisateurs?
En plus, le fait de donner son pseudo et son mot de passe mysql à un utilisateur externe est un gros probléme : s'il lui vient l'idée de tenter une conection directe à la base et que ca réussit alors il poura modifier la base en sautant toutes les protections mises en place au niveau de php.
 
Au boulot, on a choisit le cas 1 en méttant les informations de conection dans un fichier dont le contenu est innaccéssible depuis l'extérieur : Si tu mets ton pseudo et mot de passe entre "<?php" et "?>" dans un fichier ".php" celui qui essaye de le lire depuis l'extérieur recevra une page vide. Pour mon site personelle, j'avais fait exactement pareil.

Reply

Marsh Posté le 19-01-2006 à 18:19:23    

oui tout cela semble bien logique, merci de ta réponse.
 
Donc concrètement, tu crée un fichier php qui contient juste le login et mot de passe, et que tu inclue dans les script nécessaires ?
 
Ce qui m'inquiète avec cette méthode, c'est que si tu te fais pirater le serveur et pas la base de données, la base de données est complètement compromise puisque tu auras surement stocké dans un script les logins et mot de passe d'un compte qui a tous les droits sur la base de données.
 
Enfin j'imagine que c'est la meilleure solution


Message édité par Djebel1 le 19-01-2006 à 18:19:38
Reply

Marsh Posté le 19-01-2006 à 18:27:30    

Il ne faut pas croire, l'art d'être administrateur de base de donnée consiste justement à ne donner à un utilisateur que les droits dont il a besoin. Pour un site web, en tant normal, c'est juste lecture ou lecture/écriture sur certaines tables et rien de plus. Et s'il y a besoin de modifier ponctuellement la structure soit on augmente ses capacités pendant quelques heures, soit on le fait à l'aide d'un autre utilisateur.
Evidement, pour des hébergeurs comme free, des limitations aussi fines ne sont pas jouable et ils donnent directement "tous les droits" sur une et une seule base pour un utilisateur donnée.

Reply

Marsh Posté le 19-01-2006 à 18:34:14    

merci beaucoup pour tes conseils

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed