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.





script SQL
Protéger le répertoire IMG/ (Authentification)
Vos commentaires
# Le 1er octobre 2011 à 05:48, par Phil
En réponse à : Protéger le répertoire IMG/
Bonjour.
Même problème que certain, impossible d’exécuter le sript SQL (dernière étape du tuto), du coup je n’ai plus accès aux fichiers déposé sur le site.
Pourriez-vous détailler l’installation du script ?
Merci d’avance.
Phil
Répondre à ce message
# Le 17 mars 2011 à 02:43, par seds
En réponse à : Protéger le répertoire IMG/
Bonsoir,
Il y a un truc qui ne va pas :
Je suis sur spip2.1.8 sur ovh, et j’ai essayé toutes les manips de la contrib ainsi que celles du forum en prenant soin de remplacer les php3 par php, et ajouter include("ecrire/inc/headers.php") ; sous include("ecrire/inc_version.php") ;
IMG et sous répertoires sont bien inaccessibles, mais on peut encore accéder aux fichiers directement par l’url.
ici on parle beaucoup de spip1.9 mais qu’en est-il de spip2 pour ces scripts ?
# Le 17 mars 2011 à 08:01, par balou
En réponse à : Protéger le répertoire IMG/
Bonjour,
j’utilise SPIP 2.1.8 et le système de protection de répertoire à base d’un fichier index.php présent dans le répertoire IMG. Cela fonctionne correctement. Ce fichier renvoi vers la page d’accueil du site si quelqu’un essai de lire le contenu du répertoire IMG.
Contenu du fichier index.php :
Voir en ligne (Site chez O2SWITCH) : Latoniccia Club Plongée/IMG
# Le 17 mars 2011 à 11:43, par seds
En réponse à : Protéger le répertoire IMG/
Merci, j’avais bien vu ta solution proposée dans le post du 7/4/2010 mais elle ne me donne pas de meilleur résultat, les fichiers restent accessibles depuis leurs urls.
en attendant j’ai préféré la solution de cette contrib car elle me donne un erreur 403 qd la tienne qui donne un 500.
J’utilise l’acces restreint pour les visiteurs (site extranet) et cela signifie donc qu’aucun intrus ne doit accéder aux docs joints. j’ai tenté également l’installation d’un .htpassword mais mon installation a échoué et j’ignore pourquoi. j’ai posté un message mais je ne m’attends pas à une réponse en fait car nombreux posts restent sans réponse. de plus quand j’ai lu ça, j’ai préféré ne pas insister..
je viens de trouver cette solution aussi, je m’apprête à la tester..
Répondre à ce message
# Le 7 avril 2010 à 16:48, par balou
En réponse à : Protéger le répertoire IMG/
Bonjour,
pour protéger le répertoire IMG et d’autres sur mes sites, j’utilise une astuce empruntée à l’équipe PIWIGO ( Site PIWIGO) qui utilise un fichier index.php positionné dans chacun des répertoires à protéger. Lors d’une demande d’accès au répertoire protégé, le fichier index vous renvoi vers la page d’accueil de votre site et les documents utilisés dans vos articles, rubriques, brèves, etc ... restent disponibles pour SPIP.
Voir en ligne (Site chez FREE) : Latoniccia Club Plongée/IMG
Code du fichier Index.php :
# Le 30 septembre 2010 à 10:00, par sandgirl
En réponse à : Protéger le répertoire IMG/
merci pour cette astuce, ça marche nickel chrome même pour la dernière version de Spip. Depuis le temps que je cherchais un système simple et efficace.... Sympa de l’avoir partagé
Répondre à ce message
# Le 7 avril 2010 à 11:12, par Lili29
En réponse à : Protéger le répertoire IMG/
Bonjour,
Idem : comment faire pour que les documents contenus dans /IMG appartenant à des articles « public » continuent à être accessibles ?
Répondre à ce message
# Le 19 avril 2009 à 23:42, par mendesrocc
En réponse à : Protéger le répertoire IMG/ En panne d’idées
ok ca fonctionne mais chez moi (même super bien) uniquement mais pas chez free.
Free bloque Erreur interne 500.
Question de sécurité je pense.
J’ai tout essayé (les directives apache comme « action » ...) pour rediger les images vers le module securedoc doc mais cela ne fonctionne pas ou mal chez free.
J’ai même développé un module pour encoder/décoder les images mais cela ne va pas assez vite le serveur bloque.
quelqu’un a une idée ?
Merci d’avance.
# Le 24 mars 2010 à 21:48, par Flo
En réponse à : Protéger le répertoire IMG/
En général l’erreur interne 500 vient d’une commande non reconnue dans le .htaccess
J’ai donc nettoyé le .htaccess au maximum et cela fonctionne sur free (SPIP 2.0.8 ) :
deny from all
ErrorDocument 403 /securedoc.php
et le fichier securedoc.php avec les petites modifs données dans ce forum pour les include.
Répondre à ce message
# Le 28 septembre 2009 à 14:44, par jovpier
En réponse à : Protéger le répertoire IMG/
même question que françois, comment faire pour que les documents contenus dans /IMG mais faisant référence à des articles qui ne sont pas dans l’intranet continuent à être accessibles ?
# Le 17 décembre 2009 à 09:17, par quidoz
En réponse à : Protéger le répertoire IMG/
Bonjour
Avez vous trouvé une solution à ce problème ?
A+
MCQ
Répondre à ce message
# Le 14 juillet 2009 à 16:05, par Olysh
En réponse à : Protéger le répertoire IMG/
Est-il possible de détailler l’étape 3 svp : « exécuter le script » ?
Faut-il double cliquer sur le fichier une fois qu’il est installé dans le répertoire du site ?
Merci
# Le 6 décembre 2009 à 18:33, par ?
En réponse à : Protéger le répertoire IMG/
Même question... une réponse serait bienvenue !
# Le 6 décembre 2009 à 20:57, par AirW
En réponse à : Protéger le répertoire IMG/
Aaaaaaaaaaarrrghhhhhhhhhhhhhhhh ! H E L P !
J’ai suivi la procédure les yeux fermés jusqu’à l’avant dernier point. (oui, je sais, devant un écran, il faut déjà le faire). Et là, je me suis retrouvé bête : que faire de ce script ?
Mes documents sont maintenant inaccessibles.
Olysh, as-tu obtenu une réponse ?
Merci de bien vouloir lancer une bouée de sauvetage !
Répondre à ce message
# Le 30 août 2009 à 07:20, par ?
En réponse à : Protéger le répertoire IMG/
Bonjour,
j’ai tenté d’installer ce script qui me semble intéressant - en local tout fonctionne parfaitement, quand j’ai uploader les fichiers et la base sur mon site en ligne : catastrophe, les images ne s’affichent plus dans les articles. Je suis novice sur SPIP, comment revenir en arrière, j’ai suprimmé les fichiers .htaccess et securedoc mais rien n’y fait, il doit y avoir des tables dans la base qui ont été modifiées... Lesquelles ?
Help, help I need some help !!!
# Le 5 septembre 2009 à 21:56, par ?
En réponse à : Protéger le répertoire IMG/
As-tu vidé le cache ??
# Le 24 septembre 2009 à 09:41, par ?
En réponse à : Protéger le répertoire IMG/
Oui j’ai vidé le cache, j’ai même réinstallé complètement SPIP, mais le problème doit être au niveau d’une table créée dans la base qui restreint l’accès. Comment modifier les scripts htaccess et secure doc pour revenir à l’état d’origine, donner moi un exemple svp (je n’y connaîs rien en php !!!)
Merci d’avance
Répondre à ce message
# Le 9 septembre 2009 à 01:02, par François
En réponse à : Protéger des fichiers du répertoire IMG/pdf
Bonjour,
J’administre un site sous SPIP 1.9.2h (patché).
Ce site dispose d’un accès membres avec loggin et MdP.
Dans l’espace membres, se trouvent des documents .pdf réserver aux personnes s’étant identifiées dans l’espace membres.
Cependant, je me suis aperçu que ces documents sont accessible même sans être loggé, pour ceux qui connaissent l’adresse.
Adresse genre www.site.org/IMG/pdf/demo.pdf.
J’ai donc appliqué la procédure de cette article : http://www.spip-contrib.net/Proteger-le-repertoire-IMG
Mais du coup tous les documents de /IMG/pdf sont restreints.
Comment appliquer cette procédure à seulement quelques fichiers ?
Merci d’avance pour votre aide.
Répondre à ce message
# Le 10 février 2009 à 00:03, par pyvarlet
En réponse à : Protéger le répertoire IMG/
Ceci est-il toujours valable sous SPIP 2.0.3 ? Je me contente actuellement de mettre un fichier index.html dans tous les répertoires dont je ne souhaite pas que le contenu puisse être accédé directement par les utilisateurs. Qu’est-ce que je risque ? En quoi la méthode proposée ici est-elle plus sécurisante ?
En tous cas merci pour cette contrib.
Pierre
Répondre à ce message