Protéger le répertoire IMG/ - commentairesProtéger le répertoire IMG/2013-02-02T11:05:28Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4649752013-02-02T11:05:28Z<p>Bonjour, désolé de déterrer ce vieux sujet, je n'y connais rien en php. J'essaye tant bien que mal de maintenir un site web avec SPIP.<br class="autobr">
Je suis très intéressé par votre script.<br class="autobr">
J'ai fais un copié collé de votre script dans un fichier que j'ai nommé index.php, j'ai copié le fichier dans le dossier IMG de mon site, y-a-t-il une autre chose à faire, car pour l'instant j'ai toujours accès à la liste des fichiers présent dans le dossier IMG et aucune redirection ne s'effectue.<br class="autobr">
J'utilise spip 2.07 et le site est hébergé chez free.</p>Protéger le répertoire IMG/2012-02-14T14:22:30Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4544992012-02-14T14:22:30Z<p>Voilà une solution que j'applique et qui fonctionne</p>
<p>- <strong>1/ créer IMG/.htaccess contenant :</strong><br class="manualbr">SetEnvIf Referer « ^http:\/\/xxx\.mon-domaine\.fr » OK<br class="manualbr">Order Deny,Allow<br class="manualbr">Deny from all<br class="manualbr">Allow from env=OK<br class="manualbr">
<br>- <strong>2/ modifier conf/httpd.conf :</strong><br class="manualbr">DocumentRoot « /usr/local/xxx/htdocs »<br class="manualbr">AccessFileName .htaccess<br class="manualbr">...<br class="autobr">
<br class="manualbr">...<br class="manualbr">AllowOverride All<br class="manualbr"><br class="manualbr">
<br>- <strong>3/ recharger apache</strong></p>Protéger le répertoire IMG/2011-10-01T03:48:37Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4503112011-10-01T03:48:37Z<p>Bonjour.<br class="autobr">
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.<br class="autobr">
Pourriez-vous détailler l'installation du script<small class="fine d-inline"> </small>?<br class="autobr">
Merci d'avance.<br class="autobr">
Phil</p>Protéger le répertoire IMG/2011-03-17T10:43:06Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4427442011-03-17T10:43:06Z<p>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.<br class="autobr">
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.</p>
<p>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 <a href="http://www.spip-contrib.net/Creer-un-fichier-htpasswd-sous" class="spip_out" rel='nofollow external'>.htpassword</a> 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 href="http://www.spip-contrib.net/Creer-un-fichier-htpasswd-sous#forum423750" class="spip_out" rel='nofollow external'>ça</a>, j'ai préféré ne pas insister..</p>
<p>je viens de trouver <a href="http://www.spip-contrib.net/Un-niveau-d-acces-sur-les-objets" class="spip_out" rel='nofollow external'>cette solution</a> aussi, je m'apprête à la tester..</p>Protéger le répertoire IMG/2011-03-17T07:01:29Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4427192011-03-17T07:01:29Z<p>Bonjour,<br class="autobr">
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.</p>
<p><strong>Contenu du fichier index.php :</strong></p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code> // recursive call of index.php $url = '../index.php'; header( 'Request-URI: '.$url ); header( 'Content-Location: '.$url ); header( 'Location: '.$url ); exit(); ?></code></pre></div>
<p>Voir en ligne (Site chez O2SWITCH) : <a href="http://www.latoniccia.fr/IMG" class="spip_out" rel='nofollow external'>Latoniccia Club Plongée/IMG</a></p>Protéger le répertoire IMG/2011-03-17T01:43:25Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4427162011-03-17T01:43:25Z<p>Bonsoir,<br class="autobr">
Il y a un truc qui ne va pas :<br class="autobr">
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(«<small class="fine d-inline"> </small>ecrire/inc/headers.php<small class="fine d-inline"> </small>»)<small class="fine d-inline"> </small>; sous include(«<small class="fine d-inline"> </small>ecrire/inc_version.php<small class="fine d-inline"> </small>»)<small class="fine d-inline"> </small>;</p>
<p>IMG et sous répertoires sont bien inaccessibles, mais on peut encore accéder aux fichiers directement par l'url.</p>
<p>ici on parle beaucoup de spip1.9 mais qu'en est-il de spip2 pour ces scripts<small class="fine d-inline"> </small>?</p>Protéger le répertoire IMG/2010-09-30T08:00:05Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4351312010-09-30T08:00:05Z<p>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é</p>Protéger le répertoire IMG/2010-04-07T14:48:25Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4287642010-04-07T14:48:25Z<p>Bonjour,</p>
<p>pour protéger le répertoire IMG et d'autres sur mes sites, j'utilise une astuce empruntée à l'équipe PIWIGO ( <a href="http://fr.piwigo.org/" class="spip_out" rel='nofollow external'>Site PIWIGO</a>) 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.</p>
<p>Voir en ligne (Site chez FREE) : <a href="http://latoniccia.free.fr/IMG" class="spip_out" rel='nofollow external'>Latoniccia Club Plongée/IMG</a></p>
<p><strong>Code du fichier Index.php :</strong></p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code><?php
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | the Free Software Foundation |
// | |
// | This program is distributed in the hope that it will be useful, but |
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+ // recursive call of index.php $url = '../index.php';
header( 'Request-URI: '.$url );
header( 'Content-Location: '.$url );
header( 'Location: '.$url );
exit();
?></code></pre></div>Protéger le répertoire IMG/2010-04-07T09:12:58Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4287532010-04-07T09:12:58Z<p>Bonjour,</p>
<p>Idem : comment faire pour que les documents contenus dans /IMG appartenant à des articles « public » continuent à être accessibles<small class="fine d-inline"> </small>?</p>Protéger le répertoire IMG/2010-03-24T20:48:49Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4281532010-03-24T20:48:49Z<p>En général l'erreur interne 500 vient d'une commande non reconnue dans le .htaccess<br class="autobr">
J'ai donc nettoyé le .htaccess au maximum et cela fonctionne sur free (SPIP 2.0.8 ) :</p>
<p>deny from all<br class="autobr">
ErrorDocument 403 /securedoc.php</p>
<p>et le fichier securedoc.php avec les petites modifs données dans ce forum pour les include.</p>Protéger le répertoire IMG/2009-12-17T08:17:35Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4243542009-12-17T08:17:35Z<p>Bonjour</p>
<p>Avez vous trouvé une solution à ce problème<small class="fine d-inline"> </small>?</p>
<p>A+</p>
<p>MCQ</p>Protéger le répertoire IMG/2009-12-06T19:57:22Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4239942009-12-06T19:57:22Z<p>Aaaaaaaaaaarrrghhhhhhhhhhhhhhhh<small class="fine d-inline"> </small>! H E L P<small class="fine d-inline"> </small>!</p>
<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<small class="fine d-inline"> </small>?</p>
<p>Mes documents sont maintenant inaccessibles.</p>
<p>Olysh, as-tu obtenu une réponse<small class="fine d-inline"> </small>?</p>
<p>Merci de bien vouloir lancer une bouée de sauvetage<small class="fine d-inline"> </small>!</p>Protéger le répertoire IMG/2009-12-06T17:33:42Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4239932009-12-06T17:33:42Z<p>Même question... une réponse serait bienvenue<small class="fine d-inline"> </small>!</p>Protéger le répertoire IMG/2009-09-28T12:44:19Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4210822009-09-28T12:44:19Z<p>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<small class="fine d-inline"> </small>?</p>Protéger le répertoire IMG/2009-09-24T07:41:19Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4209072009-09-24T07:41:19Z<p>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<small class="fine d-inline"> </small>!!!)<br class="autobr">
Merci d'avance</p>Protéger des fichiers du répertoire IMG/pdf2009-09-08T23:02:41Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4203442009-09-08T23:02:41Z<p>Bonjour,</p>
<p>J'administre un site sous SPIP 1.9.2h (patché).</p>
<p>Ce site dispose d'un accès membres avec loggin et MdP.<br class="autobr">
Dans l'espace membres, se trouvent des documents .pdf réserver aux personnes s'étant identifiées dans l'espace membres.</p>
<p>Cependant, je me suis aperçu que ces documents sont accessible même sans être loggé, pour ceux qui connaissent l'adresse.<br class="autobr">
Adresse genre <a href="http://www.site.org/IMG/pdf/demo.pdf" class="spip_url spip_out auto" rel="nofollow external">www.site.org/IMG/pdf/demo.pdf</a>.</p>
<p>J'ai donc appliqué la procédure de cette article : <a href="http://www.spip-contrib.net/Proteger-le-repertoire-IMG" class="spip_url spip_out auto" rel="nofollow external">http://www.spip-contrib.net/Proteger-le-repertoire-IMG</a></p>
<p>Mais du coup tous les documents de /IMG/pdf sont restreints.</p>
<p>Comment appliquer cette procédure à seulement quelques fichiers<small class="fine d-inline"> </small>?</p>
<p>Merci d'avance pour votre aide.</p>Protéger le répertoire IMG/2009-09-05T19:56:13Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4202422009-09-05T19:56:13Z<p>As-tu vidé le cache<small class="fine d-inline"> </small>??</p>Protéger le répertoire IMG/2009-08-30T05:20:48Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4199652009-08-30T05:20:48Z<p>Bonjour,<br class="autobr">
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<small class="fine d-inline"> </small>?<br class="autobr">
Help, help I need some help<small class="fine d-inline"> </small>!!!</p>Protéger le répertoire IMG/2009-07-14T14:05:51Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4182452009-07-14T14:05:51Z<p>Est-il possible de détailler l'étape 3 svp : « exécuter le script »<small class="fine d-inline"> </small>?</p>
<p>Faut-il double cliquer sur le fichier une fois qu'il est installé dans le répertoire du site<small class="fine d-inline"> </small>?</p>
<p>Merci</p>Protéger le répertoire IMG/ En panne d'idées2009-04-19T21:42:43Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4155552009-04-19T21:42:43Z<p>ok ca fonctionne mais chez moi (même super bien) uniquement mais pas chez free.<br class="autobr">
Free bloque Erreur interne 500.<br class="autobr">
Question de sécurité je pense.<br class="autobr">
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.<br class="autobr">
J'ai même développé un module pour encoder/décoder les images mais cela ne va pas assez vite le serveur bloque.<br class="autobr">
quelqu'un a une idée<small class="fine d-inline"> </small>?</p>
<p>Merci d'avance.</p>Protéger le répertoire IMG/2009-02-09T23:03:33Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4132272009-02-09T23:03:33Z<p>Ceci est-il toujours valable sous SPIP 2.0.3<small class="fine d-inline"> </small>? 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<small class="fine d-inline"> </small>? En quoi la méthode proposée ici est-elle plus sécurisante<small class="fine d-inline"> </small>?<br class="autobr">
En tous cas merci pour cette contrib.<br class="autobr">
Pierre</p>Protéger le répertoire IMG/ (spip 1.9.2)2008-11-06T16:10:14Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4098482008-11-06T16:10:14Z<p>J'ai adapté cette contrib sur un spip 1.9.2<sup class="typo_exposants">d</sup>, mais je voulais en plus que ce qui est écrit plus loin dans le forum, protéger les images et les vignettes générées automatiquement.</p>
<p>Pour protéger les images, il faut ajouter au .htaccess :<br class="manualbr"><code class="spip_code spip_code_inline" dir="ltr">gif|GIF|png|PNG|jpg|JPG|jpeg|JPEG</code> dans les 2 ocuurences <code class="spip_code spip_code_inline" dir="ltr">(doc|pdf|sxw|ppt|ps|txt|xls|html|DOC ...</code> de ce fichier.</p>
<p>Ensuite, pour plus de cohérence avec spip 1.9, je sugère de renomer erreur404.php3 et securedoc.php3, erreur404.php et securedoc.php, et d'adapter leurs occurences dans le .htaccess et securedoc.php</p>
<p>Ensuite, comme dit plus bas, il faut dans securedoc.php remplacer :<br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr">include("ecrire/inc_version.php3");</code><br class="autobr">
par</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>include("ecrire/inc_version.php");
include("ecrire/inc/headers.php");</code></pre></div>
<p>Maintenant, il faut penser à protéger les vignettes qui avec spip 1.9 se trouvent désormais dans un cache dans le répertoire /local/. Pour cela, il faut :<br class="manualbr">1) placer le .htaccess dans le répertoire /IMG/ ET /local/<br class="manualbr">2) dans securedoc.php, remplacer</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> if (!ereg("/IMG/",$uri) || !ereg("..",$uri)){ not_found(); } $fichier = preg_replace(",^.*/IMG/,", "IMG/", $uri); if (!@file_exists($fichier) || !@is_file($fichier)){ not_found(); }</code></pre></div>
<p>par</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> if ((!ereg("/IMG/",$uri) && !ereg("/local/",$uri)) || !ereg("..",$uri)){ not_found(); } if (ereg("/IMG/",$uri)) {$fichier = preg_replace(",^.*/IMG/,", "IMG/", $uri);} if (ereg("/local/",$uri)) {$fichier = preg_replace(",^.*/local/,", "local/", $uri);} if (!@file_exists($fichier) || !@is_file($fichier)){ not_found(); }</code></pre></div>
<p>Chez moi, ça marche ...<br class="autobr">
bien à vous.</p>> Protéger le répertoire IMG/2008-07-09T14:44:57Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4073842008-07-09T14:44:57Z<p>réponse à moi-même : <br class="autobr">
il semble qu'après test que le problème vienne du .htaccess du dossier IMG/.<br class="autobr">
J'ai fait intervenir mon administrateur serveur pour qu'il me file un coup de main mais pour le moment pas de réponse...mais ça fait 24h et je n'ai pas de retour il doit sécher aussi sur le problème...</p>> Protéger le répertoire IMG/2008-07-08T18:35:01Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4073682008-07-08T18:35:01Z<p>suite à un changement de serveur la protection de mes docs est remise en cause alors que était Ok (impossiblité d'ouvrir les docs si non connecté).<br class="autobr">
C'est dur de se remettre dans le code, je fais donc appel à des personnes qui comme moi ont subi ce type de désagréments pour avoir des pistes sur les éventuels changement à opérer.</p>Protéger le répertoire IMG/2008-05-11T00:20:02Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4058532008-05-11T00:20:02Z<p>Le script à l'air de bien fonctionner, mais quelqu'un pourrait me dire comment faire pour la 1.9.2<sup class="typo_exposants">d</sup> car l'article est assez vieux (2004)...</p>
<p>Merci beaucoup<small class="fine d-inline"> </small>!</p>> Protéger le répertoire IMG/2008-02-28T13:42:11Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4035482008-02-28T13:42:11Z<p>Quant à moi, je ne préoccupe pas de savoir si le visiteur est loggué ou non à ce stade là.</p>
<p>C'est dans le squelette de la page que je vérifie si le visiteur l'est et s'il fait parti des auteurs de la page...</p>
<p>Donc, c'est + simple pour moi...</p>
<p>Quant à ma page erreur404, il faut d'abord que je me sorte les doigts du c## pour en faire une + claire...</p>
<p>@ +</p>> Protéger le répertoire IMG/2008-02-28T11:22:14Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4035342008-02-28T11:22:14Z<p>Pour info, sur le document securedoc.ph je pense faire des petits réajustement en fonction du plug in accès restreint, car à l'heure actuel le prog vérifie juste qu'une session est ouverte mais pas par qui ce qui peut poser problème suivant le profil du connecté</p>> Protéger le répertoire IMG/2008-02-27T19:20:38Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4035012008-02-27T19:20:38Z<p>Ok ça à l'air de fonctionner, j'ai repris la première version du code et en mixant en rajoutant quelques ajustement avec le tien et j'obtiens ce que je souhaitais<small class="fine d-inline"> </small>!<br class="autobr">
Reste plus qu'à créer les pages d'erreur<small class="fine d-inline"> </small>!</p>
<p>merci pour ton aide<small class="fine d-inline"> </small>!</p>> Protéger le répertoire IMG/2008-02-27T17:51:46Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4034972008-02-27T17:51:46Z<p>Dans</p>
<blockquote class="spip">
<p>if (ereg(lire_meta(«<small class="fine d-inline"> </small>adresse_site<small class="fine d-inline"> </small>»),$referer))</p>
</blockquote>
<p>dis moi si je me trompe mais le « adresse_site » correspond à par exempel http://127.0.0.1/intranet?</p>> Protéger le répertoire IMG/2008-02-27T17:01:45Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4034922008-02-27T17:01:45Z<p>Voici le contenu de mon fichier securedoc.php3 :</p>
<blockquote class="spip"><pre><code style="color:#000000;"><span style="color:#0000BB;"><?php </span><span style="color:#007700;">include(</span><span style="color:#DD0000;">"ecrire/inc_version.php"</span><span style="color:#007700;">);
include(</span><span style="color:#DD0000;">"ecrire/inc/headers.php"</span><span style="color:#007700;">); function </span><span style="color:#0000BB;">not_found</span><span style="color:#007700;">() { </span><span style="color:#0000BB;">http_status</span><span style="color:#007700;">(</span><span style="color:#0000BB;">404</span><span style="color:#007700;">); exit;
} </span><span style="color:#0000BB;">$uri </span><span style="color:#007700;">= </span><span style="color:#0000BB;">$REQUEST_URI</span><span style="color:#007700;">;
</span><span style="color:#0000BB;">$referer</span><span style="color:#007700;">=</span><span style="color:#0000BB;">$HTTP_REFERER</span><span style="color:#007700;">; if (</span><span style="color:#0000BB;">ereg</span><span style="color:#007700;">(</span><span style="color:#0000BB;">lire_meta</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"adresse_site"</span><span style="color:#007700;">),</span><span style="color:#0000BB;">$referer</span><span style="color:#007700;">)){ if (!</span><span style="color:#0000BB;">ereg</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"/IMG/"</span><span style="color:#007700;">,</span><span style="color:#0000BB;">$uri</span><span style="color:#007700;">) || !</span><span style="color:#0000BB;">ereg</span><span style="color:#007700;">(</span><span style="color:#DD0000;">".."</span><span style="color:#007700;">,</span><span style="color:#0000BB;">$uri</span><span style="color:#007700;">)){ </span><span style="color:#0000BB;">not_found</span><span style="color:#007700;">(); } </span><span style="color:#0000BB;">$fichier </span><span style="color:#007700;">= </span><span style="color:#0000BB;">preg_replace</span><span style="color:#007700;">(</span><span style="color:#DD0000;">",^.*/IMG/,"</span><span style="color:#007700;">, </span><span style="color:#DD0000;">"IMG/"</span><span style="color:#007700;">, </span><span style="color:#0000BB;">$uri</span><span style="color:#007700;">); if (!@</span><span style="color:#0000BB;">file_exists</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">) || !@</span><span style="color:#0000BB;">is_file</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">)){ </span><span style="color:#0000BB;">not_found</span><span style="color:#007700;">(); } </span><span style="color:#0000BB;">$size </span><span style="color:#007700;">= @</span><span style="color:#0000BB;">filesize</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">); if (!</span><span style="color:#0000BB;">$size</span><span style="color:#007700;">){ </span><span style="color:#0000BB;">not_found</span><span style="color:#007700;">(); } </span><span style="color:#0000BB;">$if_modified_since </span><span style="color:#007700;">= </span><span style="color:#0000BB;">ereg_replace</span><span style="color:#007700;">(</span><span style="color:#DD0000;">';.*$'</span><span style="color:#007700;">, </span><span style="color:#DD0000;">''</span><span style="color:#007700;">, </span><span style="color:#0000BB;">$HTTP_IF_MODIFIED_SINCE</span><span style="color:#007700;">); </span><span style="color:#0000BB;">$gmoddate </span><span style="color:#007700;">= </span><span style="color:#0000BB;">gmdate</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"D, d M Y H:i:s"</span><span style="color:#007700;">, @</span><span style="color:#0000BB;">filemtime</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">)).</span><span style="color:#DD0000;">" GMT"</span><span style="color:#007700;">; if (</span><span style="color:#0000BB;">$if_modified_since </span><span style="color:#007700;">== </span><span style="color:#0000BB;">$gmoddate</span><span style="color:#007700;">) { </span><span style="color:#0000BB;">http_status</span><span style="color:#007700;">(</span><span style="color:#0000BB;">304</span><span style="color:#007700;">); exit; } </span><span style="color:#0000BB;">http_status</span><span style="color:#007700;">(</span><span style="color:#0000BB;">200</span><span style="color:#007700;">); </span><span style="color:#0000BB;">$nom</span><span style="color:#007700;">=</span><span style="color:#0000BB;">ereg_replace</span><span style="color:#007700;">(</span><span style="color:#DD0000;">".*/"</span><span style="color:#007700;">,</span><span style="color:#DD0000;">""</span><span style="color:#007700;">,</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">); </span><span style="color:#0000BB;">$extension</span><span style="color:#007700;">=</span><span style="color:#0000BB;">ereg_replace</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"^(.*)\.(.*)$"</span><span style="color:#007700;">, </span><span style="color:#DD0000;">"\\2"</span><span style="color:#007700;">, </span><span style="color:#0000BB;">$nom</span><span style="color:#007700;">); </span><span style="color:#0000BB;">$req</span><span style="color:#007700;">= </span><span style="color:#DD0000;">"SELECT mime_type FROM spip_types_documents WHERE extension='"</span><span style="color:#007700;">.</span><span style="color:#0000BB;">$extension</span><span style="color:#007700;">.</span><span style="color:#DD0000;">"'"</span><span style="color:#007700;">; </span><span style="color:#0000BB;">$res </span><span style="color:#007700;">= </span><span style="color:#0000BB;">spip_query</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$req</span><span style="color:#007700;">); if (</span><span style="color:#0000BB;">spip_num_rows</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$res</span><span style="color:#007700;">)></span><span style="color:#0000BB;">0</span><span style="color:#007700;">){ </span><span style="color:#0000BB;">$row </span><span style="color:#007700;">= </span><span style="color:#0000BB;">spip_fetch_array</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$res</span><span style="color:#007700;">); </span><span style="color:#0000BB;">$mimeType </span><span style="color:#007700;">= </span><span style="color:#0000BB;">$row</span><span style="color:#007700;">[</span><span style="color:#DD0000;">'mime_type'</span><span style="color:#007700;">]; </span><span style="color:#0000BB;">Header</span><span style="color:#007700;">(</span><span style="color:#DD0000;">'Content-Type: '</span><span style="color:#007700;">.</span><span style="color:#0000BB;">$mimeType</span><span style="color:#007700;">); } </span><span style="color:#0000BB;">Header</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"Content-Length: "</span><span style="color:#007700;">.</span><span style="color:#0000BB;">$size</span><span style="color:#007700;">); </span><span style="color:#0000BB;">Header</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"Last-Modified: "</span><span style="color:#007700;">.</span><span style="color:#0000BB;">$gmoddate</span><span style="color:#007700;">); </span><span style="color:#0000BB;">Header</span><span style="color:#007700;">(</span><span style="color:#DD0000;">'Content-Disposition: attachment; filename="'</span><span style="color:#007700;">.</span><span style="color:#0000BB;">$nom</span><span style="color:#007700;">.</span><span style="color:#DD0000;">'"'</span><span style="color:#007700;">); </span><span style="color:#0000BB;">readfile</span><span style="color:#007700;">(</span><span style="color:#0000BB;">$fichier</span><span style="color:#007700;">);
}
else { </span><span style="color:#0000BB;">not_found</span><span style="color:#007700;">();
} </span><span style="color:#0000BB;">?></span></code></pre>
</blockquote>
<p>et celui du fichier .htaccess situé dans le répertoire IMG :</p>
<blockquote class="spip">
<p>
ErrorDocument 404 http://127.0.0.1/intranet/erreur404.php3</p>
<p><span class="ressource"><IfModule></span>
<br class="autobr"> RewriteEngine On<br class="autobr"> RewriteRule « \.(doc|pdf|sxw|ppt|ps|txt)$ » ../securedoc.php3<br class="autobr">
</p>
<p><br class="autobr"> <span class="ressource"><IfModule></span>
<br class="autobr"> <br class="autobr"> Deny from all<br class="autobr"> ErrorDocument 403 ../securedoc.php3<br class="autobr"> <br class="autobr"> <br class="autobr">
</p>
</blockquote>
<p>J'ai eu la flemme de créer une page d'erreur à la place de « http://127.0.0.1/intranet/erreur404.php3 ».</p>
<p>Et puis c'est tout...</p>
<p>Comme tu le vois : c'est le minimum syndical et cela marche.</p>
<p>Par contre, je n'ai pas modifié le fichier .htaccess situé dans le répertoire principal du site avec les options</p>
<blockquote class="spip">
<p>
ErrorDocument 404 erreur404.php3<br class="autobr">
options -indexes</p>
</blockquote>
<p>comme indiqué au début...</p>
<p>Mais je ne sais plus pourquoi je ne l'ai pas fait, ça remonte à 6 mois...</p>
<p>En tout cas, ça marche comme je le voulais.</p>> Protéger le répertoire IMG/2008-02-27T16:43:09Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4034912008-02-27T16:43:09Z<p>Oui je l'ai rajouté.</p>
<p>L'accès à mes docs est verrouillé aussi bien en ayant ouvert une session qu'en copiant collant le lien vers le dans le champ adresse de firefox.</p>
<p>tu as seulement rajouter cette ligne de code sans autres modifs<small class="fine d-inline"> </small>?</p>> Protéger le répertoire IMG/2008-02-27T11:02:28Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4034682008-02-27T11:02:28Z<p>Bonjour,</p>
<p>Pour ma part, j'ai uniquement interdit l'accès direct aux fichiers du répertoire IMG (et à ses sous-rep) et je gère un accès restreint sans plugin en autorisant uniquement l'accès au(x) auteur(s) des articles dont je veux limiter l'accès.</p>
<p>As-tu essayé de rajouter la ligne :</p>
<blockquote class="spip">
<p>include(«<small class="fine d-inline"> </small>ecrire/inc/headers.php<small class="fine d-inline"> </small>»)<small class="fine d-inline"> </small>;</p>
</blockquote>
<p>au début de securedoc.php<small class="fine d-inline"> </small>?</p>
<p>Salutations</p>> Protéger le répertoire IMG/2008-02-27T09:30:39Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment4034612008-02-27T09:30:39Z<p>Bonjour,</p>
<p>j'esaie d'utiliser cette astuce pour protéger l'accès au fichier dans IMG s'il n'y a pas de session ouverte.</p>
<p>J'utilise le plug-in accès restreint pour gérer mes accès utilisateurs.</p>
<p>j'ai modifié la ligne include(«<small class="fine d-inline"> </small>ecrire/inc_session.php3<small class="fine d-inline"> </small>») par include(«<small class="fine d-inline"> </small>ecrire/inc/session.php<small class="fine d-inline"> </small>») car je travaille sur la version 1.9.2.</p>
<p>J'ai un message d'erreur 403 forbidden lorsque j'essaie d'accède raux documents soit par accès direct soit par le lien proposé par l'article sur SPIP.</p>
<p>Y'a t'il d'autre choses à modifier<small class="fine d-inline"> </small>?</p>> Protéger le répertoire IMG/2007-11-01T11:41:02Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment3997232007-11-01T11:41:02Z<p>...tant que tu n'oublies pas de le placer dans TOUS les sous-dossiers<small class="fine d-inline"> </small>! Vive l'automatisme<small class="fine d-inline"> </small>!</p>> Protéger le répertoire IMG/2007-09-07T14:54:25Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment3977272007-09-07T14:54:25Z<p>Quant à moi, j'ai fait le contraire :<br class="autobr">
J'ai ajouté</p>
<blockquote class="spip">
<p>include(«<small class="fine d-inline"> </small>ecrire/inc/headers.php<small class="fine d-inline"> </small>»)<small class="fine d-inline"> </small>;</p>
</blockquote> <p>au début du fichier securedoc.php3.</p>
<p>Salutations<small class="fine d-inline"> </small>;-)</p>Protéger le répertoire IMG/2006-11-10T16:09:46Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment3886112006-11-10T16:09:46Z<p>Excellente Contrib<small class="fine d-inline"> </small>!! Merci Aurélien.</p>
<p>Juste une précision sur le fichier .htaccess quand l'Apache tourne sur un OS Windows :<br class="autobr">
La première ligne doit juste être :<br class="autobr">
ErrorDocument 404 /erreur404.php3</p>
<p>sans les ../</p>
<p>Sinon le fichier .htaccess renvoit sur une page vide indiquant ../erreur404.php3</p>> Protéger le répertoire IMG/2004-12-31T12:54:56Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment2972122004-12-31T12:54:56Z<p>Bonjour,</p>
<p>merci pour cette contrib.<br class="autobr">
Je viens de tester la solution.<br class="autobr">
En l'utilisant telle quelle j'obtenais un message d'erreur « undefined » sur la fonction « http_status() ».<br class="autobr">
Je l'ai remplacée par un « header() », dans securedoc.php3, et ça marche<small class="fine d-inline"> </small>!</p>
<p>Le seul inconvenient pour mon site est que je voudrais pouvoir garder des documents joints en accès libre, sans identification du lecteur.<br class="autobr">
Or toutes les images et douments joints sont envoyés par SPIP dans le répertoire IMG.</p>
<p>Est ce qu'on peut forcer SPIP à changer de répertoire, pour certaines rubriques par exemple<small class="fine d-inline"> </small>?</p>> Protéger le répertoire IMG/2004-12-30T22:37:45Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment2958482004-12-30T22:37:45Z<p>mdr :-)<br class="manualbr">je pensais être le seul :-)</p>> Protéger le répertoire IMG/2004-12-30T22:33:47Zhttps://files.spip.org/Proteger-le-repertoire-IMG#comment2958392004-12-30T22:33:47Z<p>Bravo pour ce script que je n'ai pas essayé<small class="fine d-inline"> </small>!!! Je place simplement un fichier index.html qui ne contient rien à la racine du dossier IMG et de ces sous-dossiers. Je suis conscient que la protection est « jeune », mais elle fait son effet...</p>