Le WordPress d'aujourd'hui, décodé pour les développeurs

Sécurité

Maquettes 3D confidentielles accessibles par une URL devinable

Les rendus 3D d'un projet non encore annoncé aux clients d'un cabinet d'architectes se laissaient trouver en devinant simplement le nom du dossier suivant.

Par Clément Hadrot • 11 mai 2025 • 4 min de lecture • Aucun commentaire
Maquettes 3D confidentielles accessibles par une URL devinable

« projet-dupont-v3 » puis « projet-martin-v3 » : il n’a fallu que deux essais pour qu’un visiteur curieux tombe sur les maquettes 3D d’un projet d’architecture qui n’avait pas encore été présenté à son client. Le cabinet utilisait un espace de partage construit sur mesure dans WordPress, où chaque projet recevait un dossier nommé d’après le patronyme du client et un numéro de version, sans aucune barrière d’authentification devant ces fichiers volumineux. Cet article ne traite pas du stockage externalisé de ces fichiers, sujet déjà couvert côté hébergement : il porte sur la logique d’accès défaillante mise en place autour du partage.

Une convention de nommage qui devient une faille

La convention adoptée par l’équipe — nom de famille du client en minuscules, suivi d’un numéro de version — facilitait le classement interne des dossiers, mais transformait chaque nom de client connu en clé d’accès potentielle à un autre projet. Un partenaire, un concurrent ou simplement un visiteur curieux n’avait besoin que de connaître ou deviner le nom d’un client pour explorer ses maquettes non publiées.

Ce que révélait l’arborescence

L'essentiel à retenir : Les noms de dossiers suivaient une convention prévisible par projet ; Aucune authentification ne protégeait l'espace de partage ; Un espace client authentifié a remplacé le partage par lien
wp-content/uploads/projets/
├── projet-dupont-v1/
├── projet-dupont-v2/
├── projet-dupont-v3/
├── projet-martin-v1/
├── projet-martin-v2/
└── projet-martin-v3/

Chaque dossier était directement accessible par son chemin, sans fichier index.php vide pour bloquer le listage, et surtout sans aucune vérification que le visiteur avait le droit de consulter ce projet précis plutôt qu’un autre.

Pourquoi le simple secret d’une URL ne protège rien

Reposer la confidentialité d’un document sur la difficulté supposée à deviner son adresse est une approche fragile : un moteur de recherche peut l’indexer, un client peut transmettre le lien par erreur à la mauvaise personne, ou un tiers peut simplement essayer plusieurs variantes plausibles autour d’un nom connu. La sécurité par l’obscurité ne remplace jamais un contrôle d’accès véritable.

La solution mise en place

Un espace client authentifié a remplacé le partage par dossier ouvert. Chaque client dispose désormais d’un compte WordPress avec un rôle personnalisé client_projet, et chaque maquette est associée à ce compte via une relation stockée en métadonnée :

function domaine_verifier_acces_projet($id_projet) {
  $utilisateur = wp_get_current_user();
  if (!$utilisateur->exists()) {
    auth_redirect();
  }
  $clients_autorises = get_post_meta($id_projet, 'clients_autorises', true);
  if (!in_array($utilisateur->ID, (array) $clients_autorises, true)) {
    wp_die('Vous n’avez pas accès à ce projet.', 403);
  }
}

Les fichiers eux-mêmes ont été déplacés hors de la racine web accessible, et servis uniquement après passage par cette vérification de capacité, via un point de terminaison dédié plutôt qu’un chemin de fichier direct.

Renommer sans casser les liens existants

Le renommage des dossiers vers des identifiants opaques posait un risque de rupture des liens déjà transmis à certains clients. Une redirection temporaire a donc été mise en place, le temps que chaque client se reconnecte via son nouvel espace authentifié, avant de retirer complètement l’ancien accès direct par nom de dossier.

Cette période transitoire a duré trois semaines, durée jugée suffisante au regard du rythme habituel des échanges avec les clients du cabinet. Chaque connexion réussie via le nouvel espace authentifié était consignée, ce qui a permis de relancer individuellement, par téléphone plutôt que par e-mail pour éviter toute confusion, les rares clients n’ayant pas encore basculé vers le nouveau système à l’approche de la date de fermeture définitive de l’ancien accès.

Étendre la vérification à d’autres usages internes

Cette même logique de vérification par capacité a ensuite été réutilisée pour d’autres documents sensibles échangés avec les clients : devis chiffrés, plans de financement, comptes rendus de réunion. La règle retenue par l’équipe est désormais systématique : aucun document nominatif ne doit être accessible par un chemin devinable, quel que soit le format ou le service qui le génère.

En résumé

Une convention de nommage pratique pour une équipe interne peut devenir, vue de l’extérieur, une carte au trésor. Remplacer le partage par nom de dossier prévisible par un espace client authentifié, avec une vérification explicite de capacité avant chaque envoi de fichier, ferme durablement ce type d’exposition trop facile à découvrir.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi