|
C'est suite à un thread du forum joomla Francophone (comme souvent) que j'ai développé le plugin Fly06 Images Protector qui est aujourd'hui finalisé dans sa version 1.0 Beta.
L'intérêt principal de ce plugin est de fournir une protection flexible aux sites de contenus souhaitant protéger efficacement les images des articles accessibles uniquement aux membres connectés.
Ce plugin permet de synchroniser l'accès aux images d'un répertoire (par exemple : images/stories/fruit/) avec la session Joomla/Php. En d'autres termes, les images de ce dossier seront accessibles lorsque l'utilisateur est un membre connecté et ne le seront pas lorsque l'utilisateur est un simple visiteur.
A noter qu'il fonctionne dans le frontend mais aussi dans le backend, à savoir que les images protégées sont parfaitement visibles dans l'éditeur Joomla du BE. Cela peut paraître évident a priori mais ça ne l'est pas car les sessions frontend et backend sont indépendantes ;-)
La technique utilisée consiste simplement à :
- Rediriger la requête (exemple : http://monsite.truc/images/stories/fruit/pears.jpg) vers un fichier de traitement php en utilisant une directive du module mod_rewrite (Apache) dans un htaccess. Il ne s'agit pas d'une redirection http au sens strict du terme mais d'une simple redirection serveur totalement transparente côté client. L'image est passée dans la query-string de la nouvelle url (fichier php)
- Le fichier php vérifie que le client a les droits pour accéder à l'image. Si c'est le cas, l'image est chargée dynamiquement puis restitué au client en utilisant la librairie gd. Dans le cas contraire, le code se comporte exactement comme si le répertoire était protégé par un htaccess contenant la directive 'deny from all' (403 Forbidden)
Il s'agit d'un plugin de type 'system' qui comporte une interface de configuration destinée à faciliter la tâche du webmaster.

Comme on le constate sur le screen-shot ci-dessus, ce plugin intègre plusieurs paramètres dont certains non standards :
- 8 paramètres de statut (read-only) qui indiquent au webmaster si un élément specifique est correctement configuré ou non (5 pour la configuration serveur, 2 pour la configuration du plugin et 1 paramètre global)
- 2 paramètres standards dont le répertoire que l'on souhaite protéger (ici : images/stories/fruit/)
- 1 paramètre de type 'bouton' qui permet la création et la suppression automatique du htaccess par un simple click
Le tableau ci-dessous décrit ces paramètres en détail :
| Paramètre |
Type |
Description |
Global Plugin Status
|
Paramètre de statut (read-only) |
Ce paramètre doit être sur OK pour que le plugin puisse fonctionner correctement. Dans le cas contraire il indique NOK. |
Session Cookies Status
|
Paramètre de statut (read-only)
|
Indique si la directive session.use_cookies est activée (ou pas) dans le php.ini. |
| GD Status |
Paramètre de statut (read-only)
|
Indique si la librairie GD est chargée (ou pas).
|
cUrl Status
|
Paramètre de statut (read-only)
|
Indique si la librairie cUrl est chargée (ou pas).
|
| Apache Status |
Paramètre de statut (read-only)
|
Indique si le site tourne sur un serveur Apache (ou pas). |
| mod_rewrite Status |
Paramètre de statut (read-only)
|
Indique si le module Apache mod_rewrite est activée (ou pas). |
| Folder Status |
Paramètre de statut (read-only)
|
Indique si le répertoire saisi par le webmaster est un répertoire valide (ou pas). |
| Protected Images Folder |
Texte
|
Chemin complet du répertoire d'images à protéger depuis la racine du site Joomla. |
Htaccess Status
|
Paramètre de statut (read-only)
|
Indique si le htaccess est présent dans le répertoire d'images à protéger et si il est valide. |
Create/Remove Htaccess
|
Bouton |
Bouton permettant de créer vs supprimer automatiquement le htaccess dans le répertoire d'images à protéger.
|
Remove ImageTags
|
Yes/No
|
Si activée (Yes), cette option pemet de retirer dynamiquement du html les balises <img ... /> qui pointent vers le répertoire d'images à protéger lorsque le client est un simple visiteur. Cela permet d'être sûr de ne pas avoir d'images non chargées (parce que protégées) dans ses pages Joomla accessibles aux simples visiteurs. |
A noter pour ceux qui seraient curieux de connaître la technique utilisée que le htaccess créé automatiquement par le plugin est à la fois très simple et très explicite :
### Begin - Fly06 Images Protector
RewriteEngine On
RewriteRule ^([^.]+)\.(gif|png|jpe?g)$ plugins/system/fly06_images_protector/get_protected_image.php?image=$1.$2 [L]
### End - Fly06 Images Protector
Notons que ce htaccess est créé dans le répertoire d'images à protéger et qu'il est indépendant du htaccess situé à la racine du site Joomla.
Le plugin Fly06 Images Protector n'est actuellement pas disponible en téléchargement.
Une réflexion est en cours sur le choix des extensions développées sur ce site qui seront ou non publiées sur le JED et feront l'objet d'un support et de mise-à-jour régulières.
Par contre, il est en démonstration sur le site demo.fly06.fr.
Vous pouvez tester avec cette image en accès visiteur puis en accès membre (toto/toto12) en vous connectant via le formulaire de de connexion situé la page d'accueil du site. |