Pourquoi cette contrib ?
Dans le cas d’un intranet, il peut être utile de vouloir restreindre l’accès aux pièces jointes des articles ou des rubriques uniquement aux personnes autorisées à se connecter au site. (Cf : #LOGIN_PUBLIC et #URL_LOGOUT)
Spip stocke l’ensemble des documents (publiés ou non) dans le répertoire IMG/ . N’importe qui peut consulter ces documents (images, fichiers pdf, word...) en allant à l’adresse http://www.votresite.com/IMG/ ou en connaissant l’url d’un document. Cette contrib permet donc de corriger ce problème et de restreindre l’accès à vos données.
I. Ne pas lister le contenu des répertoires
La première chose à faire est d’empêcher Apache de lister le contenu des répertoires ne contenant pas de fichier "index". Pour cela, il faut placer un fichier nommé .htaccess à la racine de votre site. Ce fichier doit contenir les lignes suivantes :
La première ligne permet de rediriger l’internaute lorsque la page demandée n’existe pas. Pour cela, vous devez créer un squelette d’erreur (couples de fichier erreur404.php3/erreur404.html)
La deuxième ligne empêche Apache de lister le contenu des répertoires ne possédant pas de fichier "index"
Ces règles s’appliquent au répertoire racine et à ses sous-répertoires.
II. Protéger le répertoire IMG/
1. - Créer un fichier .htaccess à la racine du répertoire IMG/ contenant les instructions suivantes
Pour info : Afin de ne pas trop surcharger le serveur, les fichiers protégés sont uniquement les fichiers : doc, pdf, sxw, ppt, ps, xls, html et txt. Si vous voulez protéger d’autres types de fichiers, vous devez rajouter des extensions (ex : gif, jpg...).
2. - Créer le fichier securedoc.php3 à la racine de votre site.
3. - Exécuter le script SQL suivant qui va compléter les champs mime_type de la table spip_types_documents qui par défaut sont vides.
III. Comment çà marche ?
Le fichier "IMG/.htaccess" redirige les demandes de documents de l’internaute vers le fichier "securedoc.php3"
Le script "securedoc.php3" vérifie si l’internaute est connecté. Dans ce cas, le script effectue plusieurs vérifications (Est-ce que le fichier existe ; Est ce que sa taille est supérieure à 0...). Enfin, il récupère le type mime du document, complète les en-têtes http de la page et retourne le document à l’internaute.
Dans le cas inverse, une erreur 404 est retournée au navigateur.



