Connect.php

  Le fichier de connexion à la base de données


SPIP enregistre la connexion à sa base de données dans un unique fichier de paramétrage, -un simple fichier de quelques lignes de texte en php- hautement confidentiel.

Car ce ficher contient le mot de passe d’accès à la base de données !

 
 
 
 
 
 
 
 

SPIP enregistre la quasi-totalité des paramétrages opérationnels et des données... en base de données ; encore faut-il y avoir accès au sein du code php !

 Ou se trouve ce fichier

SPIP utilise un petit fichier texte source php, appelé connect.php (autrefois inc-connect.php ), situé dans un répertoire spécifique, ./config protégé en acces Web ; il est important de restreindre tous les accès à ce fichier, car sa lecture permettrait à tout utilisateur Web (en particulier utilisateur d’un compte sur le même groupe de serveurs d’hébergement) de récupérer l’ensemble de vos données contenues en base de données : les articles, mais aussi les mots de passe, éléments de connexion et l’identité (mail) de tous vos utilisateurs....
A l’installation, SPIP crée donc automatiquement un fichier de protection au standard Apache, le .htaccess dans les sous-répertoires sensibles...

 Que contient-il ?

Ce fichier contient essentiellement les codes de connexion au service de base de données, c’est à dire (cf. Check-liste d’installation SPIP.) : le moteur de base de donnée , Host et Port / User et password, DBname et $prefix eventuel, voire des options [1].
Voici la version la plus simple de la fonction db_connect :
spip_connect_db('localhost','','root','','spip','mysql', 'spip','');

Vous en trouveriez la définition dans le fichier source ./ecrire/base/connect_sql.php :
function spip_connect_db($host, $port, $login, $pass, $db='', $type='mysql', $prefixe='', $auth='') qui vous permet de comprendre comment retrouver vos codes...

  1. $host : adresse IP ou nom du serveur de base de données [2],
  2. $port : un numéro de ’port’ TCP/IP pour atteindre le SGBD [3]
  3. $login : le nom utilisateur de connexion au SGBD
  4. $pass : un mot de passe [4]
  5. $db : le nom de la base de données utilisé
  6. $type : le type du moteur de SGBD : moteurs et documentations SQL / SPIP
  7. $prefixe : le prefix qui identifie le jeu de tables du SPIP...
  8. $auth : une zone d’options (voir ci-dessous pour la connexion LDAP)

 Connexion LDAP

Il est possible de demander à SPIP de vérifier la connexion des auteurs dans un annuaire AD/LDAP en précisant le paramètre supplémentaire dans le fichier de connexion SPIP.
spip_connect_db('localhost','','root','','user','mysql', 'spip','ldap');
Exemple : appel à un fichier ldap.php ci-dessous, déposé dans le même dossier pour compléter la configuration d’une connexion SPIP :

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['ldap_base'] = 'OU=Utilisateurs,DC=domaine,DC=org';
$GLOBALS['ldap_link'] = @ldap_connect('ad.domaine.org','389');
@ldap_set_option($GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'3');
@ldap_bind($GLOBALS['ldap_link'],'CN=User,OU=Utilisateurs,DC=domaine,DC=org','user');
$GLOBALS['ldap_champs'] = array('login' => array('sAMAccountName','uid','login','userid','cn','sn'),'nom' => 'cn','email' => 'mail','bio' => 'description',);

Le compte utilisé -ici sans password- doit pouvoir accéder à l’ensemble des comptes concernés, spécifiés par la présence d’une valeur ’ldap’ dans le champ ’source’ de la table spip_auteurs.

 Cas de multi-bases

D’après Les possibilites multi-bases, il est possible d’utiliser plusieurs bases (meme dans plusieurs moteurs de SGBD), en définissant plusieurs fichiers de connexion selon ce modèle ; on doit alors compléter la syntaxe de la table parcourue dans l’instruction principale de BOUCLE, en précédant le nom de la table du nom du fichier de connexion à la BdD correspondante...
Outre les ajouter dans le dossier protégé ./config/ (solution standard SPIP), il est aussi loisible de créer ces fichiers dans un sous-dossier ./connect/, pour utilisation dans un plugin [5]...


Merci de nous signaler les coquilles ou erreurs qui figureraient dans cette page.

[1par exemple, source complémentaire de connexion LDAP

[2Ici,localhost désigne conventionnellement le serveur hébergeur de SPIP lui-même...

[3Optionnel, dépend du SGBD...

[4Aucun indiqué... à éviter !!


Liens visibles seulement pour les inscrits.

Article publié le 3 septembre 2013, et actualisé en septembre 2016 .

Répondre à cet article