PHP/MySql et sécurité du mot de passe
PHP/MySql et sécurité du mot de passe
Bonjour.
Pour toute application utilisant PHP/MySql, on doit charger sur le serveur un fichier contenant le mot de passe, pour que les pages adéquates puissent accéder à la base de données. Mais qu'en est-il au niveau sécurité ? Quelle est la protection effective du dit fichier ?
Merci.
Pour toute application utilisant PHP/MySql, on doit charger sur le serveur un fichier contenant le mot de passe, pour que les pages adéquates puissent accéder à la base de données. Mais qu'en est-il au niveau sécurité ? Quelle est la protection effective du dit fichier ?
Merci.
En théorie, le fichier doit définir des variables (ou peut-être mieux, des constantes) et être lui-même en PHP (extension comprise), afin que si quelqu'un découvre son adresse il ne voie qu'une page blanche.
Mieux vaut aussi, si l'application le permet, le mettre dans un répertoire séparé, protégé par un htaccess ou même tout à fait inaccessible via le serveur Web (un niveau sous la racine de celui-ci par exemple).
Mieux vaut aussi, si l'application le permet, le mettre dans un répertoire séparé, protégé par un htaccess ou même tout à fait inaccessible via le serveur Web (un niveau sous la racine de celui-ci par exemple).
Ce n'est pas tout à fait exact !
PHP/MYSQL ne gère pas les droits d'accès aux données (enfin presque car mysql peut le faire). C'est le role du serveur de gérer les droits. Dans le cas d'Apache qui représente maitenant la majorité des serveurs dans le monde, il faut en passer par la configuration, soit du serveur principal, soit d'un serveur virtuel, soit d'un hébergement de site personnel, soit d'un fichier de configuration d'un répertoire donné.
Dans ce dernier, il s'agit du fichier .htaccess qui contient les directives nécessaires pour la sécurisation des données. Et classiquement, une configuration normale du serveur Apache interdit l'accès à ce fichier de l'extérieur.
PHP/MYSQL ne gère pas les droits d'accès aux données (enfin presque car mysql peut le faire). C'est le role du serveur de gérer les droits. Dans le cas d'Apache qui représente maitenant la majorité des serveurs dans le monde, il faut en passer par la configuration, soit du serveur principal, soit d'un serveur virtuel, soit d'un hébergement de site personnel, soit d'un fichier de configuration d'un répertoire donné.
Dans ce dernier, il s'agit du fichier .htaccess qui contient les directives nécessaires pour la sécurisation des données. Et classiquement, une configuration normale du serveur Apache interdit l'accès à ce fichier de l'extérieur.
Voilà comment je procède.
J'ai un fichier global PHP :
Et dans chaque page accédant la la base de données :
On peut mieux faire ?
Protéger l'accès par un htaccess ? Oui, mais si j'ai bien compris, les pages (compteur, livre d'or...) ont besoin du mot de passe pour fonctionner, et elles n'arriveront pas à y accéder si il n'est pas... accessible !
J'ai un fichier global PHP :
Code : Tout sélectionner
<?
$host = "xxxxx";
$user = "xxxxx";
$pass = "xxxxx";
$bdd = "xxxxx";
@mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
@mysql_select_db("$bdd") or die("Impossible de se connecter");
?>
Code : Tout sélectionner
include("fichier_global.php");
Protéger l'accès par un htaccess ? Oui, mais si j'ai bien compris, les pages (compteur, livre d'or...) ont besoin du mot de passe pour fonctionner, et elles n'arriveront pas à y accéder si il n'est pas... accessible !
Si si, PHP exécute l'instruction include via le système de fichiers local (d'où la possibilité de placer ton fichier hors de la visibilité du serveur Web).
La protection par htaccess ou l'inaccessibilité par le serveur est un plus dans le cas où, par exemple suite à une mise à jour ratée du serveur par l'hébergeur, les fichiers PHP ne se trouvent pas interprétés pendant un certain temps et sont affichés en clair.
Bon, même si ça devait arriver, en théorie l'accès à la base de données devrait avoir un mot de passe différent de l'accès FTP et on ne devrait rien savoir en faire. En pratique je sais que ce n'est pas toujours le cas.
La protection par htaccess ou l'inaccessibilité par le serveur est un plus dans le cas où, par exemple suite à une mise à jour ratée du serveur par l'hébergeur, les fichiers PHP ne se trouvent pas interprétés pendant un certain temps et sont affichés en clair.
Bon, même si ça devait arriver, en théorie l'accès à la base de données devrait avoir un mot de passe différent de l'accès FTP et on ne devrait rien savoir en faire. En pratique je sais que ce n'est pas toujours le cas.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités