sécurité MySQL

sebb
Invité n'ayant pas de compte PHPfrance

14 juin 2006, 12:01

Bon c'est une question sans doute à la réponse simple mais qui m'ennuye assez. Je code un site avec accès utilisateur via login et mdp. Pour éviter les injections SQL pirates je me débrouille, mais voilà: comment rendre inaccessible le mot de passe et le nom d'utilisateur demandés par MySQL pour accéder à la BD contenant la liste des utilisateurs et de leurs mdp (et le cas échéant y inscrire les nouveaux utilisateurs)??
Je les ai mis dans un fichier .php qui est appelé par require.
Est-ce une sécurité suffisante? Et comment rendre impossible l'accès détourné à ce fichier (oui c'est un fichier .php mais parfois le serveur merde et affiche quand même le contenu!)

Merci pour vos conseils...

Eléphant du PHP | 383 Messages

14 juin 2006, 12:15

la premiere precaution est de penser a mettre les balises <? et ?> au debut et a la fin de ton fichier.. comme ca, s'il est appelé directement, il n'affichera que du blanc.

ensuite, tu peux le placer dans un repertoire protégé par un htaccess avec un DENY FROM ALL.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juin 2006, 12:23

1/ si le code n'est pas entouré par un <?php ?>, les valeurs ne seront jamais reconnues ;)
2/ si tu interdit l'accès au fichier pour tous, même ton applicatif ne pourra y acceder. Sans être un pro, je dirais qu'il ne faut autoriser uniquement l'accès au serveur local. Un truc du genre

Code : Tout sélectionner

Deny From All Allow from 127.0.0.1
3/ le fait de placer tes identifiants dans un script suffit parce que celui qui parviendra à lire ce script aura déjà réussi à s'introduire sur le serveur et il sera trop tard et le vol de ces identifiants sera le moindre de tes soucis ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 383 Messages

14 juin 2006, 12:40

pour le coup du htacces, je ne suis pas sur... le htaccess s'applique uniquement aux connexion http, alors que la le fichier est appelé par un logiciel present sur le serveur..

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juin 2006, 12:58

Pas faux :-k

Fraudrait que j'essaye ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 3 Messages

14 juin 2006, 13:26

Merci pour vos réponses,

bien évidemment mon fichier appelé est entre balises <?php et ?> d'ailleurs le lien fonctionne très bien. Cependant je n'ai pas de fichier .htaccess, comment ça marche ce truc?

Eléphant du PHP | 383 Messages

14 juin 2006, 13:30

un fichier .htaccess est un fichier que tu place dans des repertoire pour donner des instructions a apache. typiquement, cela sert a :
-restreindre l'acces au repertoire
-faire de l'url rewriting..

je n'ai pas le code exact, mais la doc se trouve facilement.

http://fr.wikipedia.org/wiki/Htaccess

Eléphant du PHP | 332 Messages

16 juin 2006, 18:06

Je ne sais pas comment est configuré ton serveur, ni à quels répertoires tu as accès, mais pourquoi ne pas mettre tous ces ficheirs sensibles dans un répertoire qui n'est pas accessible par le web : les require fonctionnent en utilisant la hiérarchie du disque, pas celle du web.

2 exemples :
sur un hébergement OVH mutualisé, les pages web sont dans un répertoire home/nomuser/www.
Pour stocker des informations sensibles (comme les fichiers .htpasswd), je crée systématiquement un répertoire home/nomuser/private.
Les fichiers de ce répertoire sont accessibles par ftp et par PHP. Mais en aucun cas par le web.
Même si le serveur par en sucette, l'utilisateur aura un message lui disant que le fichier home/nomuser/private est inaccessible ou lui montrera la source du PHP. Mais l'internaute ne pourra jamais accéder à ce répertoire puisqu'il lui faudrait taper http://www.site.com/../private !

Même chose avec un hébergement sur un serveur Windows dédié. IIS est configuré pour que les sites soient dans un répertoire D:\SitesWeb (ou C:\Inetpub par défaut). Et les fichiers sensibles sont stokés ailleurs sur le disque, donc hors de portée du Web. Et dans ce cas, c'est même inaccessible via ftp : il faut directement aller sur le serveur.

Petit nouveau ! | 3 Messages

16 juin 2006, 23:08

merci à tous pour vos avis, je m'en vais les mettre en pratique de ce pas. Entretemps comme un imbécile j'ai foutu en l'air mon MySQL local, que j'ai dû désinstaller puis réinstaller et tout débugger... aarrggh la galère.... :cry: :cry:

S