Sur Drupal 8/9/10, les fichiers privés dans les media entities peuvent être accessibles en direct par des utilisateurs anonymes, même si le node parent est protégé. Faille de sécurité critique !
Le problème
- Node protégé → Paragraph → Media entity → Fichier private://
- L'accès se base sur l'entité immédiatement parente (paragraph/media)
- Résultat : fichiers confidentiels accessibles en direct 🚨
La solution : hook_file_download
- Approche 1 : Bloquer les utilisateurs anonymes
- Approche 2 : Permission personnalisée par rôle
- Approche 3 : Vérification selon le type MIME
Bonnes pratiques
- Toujours utiliser private:// pour les fichiers sensibles
- Tester l'accès anonyme aux fichiers privés
- Logger les tentatives d'accès refusées
- Tests automatisés (Playwright) pour non-régression
Exemple de code complet et tests inclus dans l'article !
Besoin d'accompagnement ?
Notre équipe d'experts peut vous aider à mettre en œuvre ces recommandations.
Contactez-nous