Détection d'une installation spip depuis config/connect.php

Description du bug / Comment le reproduire

Voir aussi https://discuter.spip.net/t/interdire-lacces-a-ecrire-exec-install/191294

  1. Avoir un site spip qui stocke ses credentials dans un fichier .env à la racine
  2. Modifier le ficher config/connect.php et coder l'accès à la BDD sous la forme spip_connect_db($_ENV['DB_HOST'], '', $_ENV['DB_USER'], $_ENV['DB_PASSWORD'], $_ENV['DB_NAME'], 'mysql', 'spip', ''); (en lieu et place de spip_connect_db('DB_HOST', '', 'DB_USER', 'DB_PASSWORD','DB_NAME', 'mysql', 'spip', '');)
  3. Se rendre sur ecrire/?exec=install&etape=4 (ou toute autre url de la procédure d'installation)
  4. La liste des plugins est affichée avec leur version

Comportement attendu

Un access denied

Piste de résolution

Résolution facile

Modifier la regex dans analyse_fichier_connection pour la rendre plus souple et accepter des variables issues de tableau php.

Résolution robuste

Les credentials dans un fichier, c'est un coup à se retrouver avec des secrets dans un repo public sur github... Il serait probablement plus safe de faire un mécanisme à base de .env puis de tester la validation de l'installation en essayant d'aller lire une table par exemple.

Informations techniques

  • Version de SPIP : 4.3 4.4 5.0
  • Version de PHP : 7.4 8
  • Navigateur utilisé : brave, firefox nightly build