Une solution anti-hotlink chez Free ?

Bonjour à tous,

j'aimerais parvenir à bloquer l'accès aux liens directs vers les images de mon site (hotlinking), au moins pour certains domaines (russes notamment).

J'ai trouvé plusieurs solutions utilisant un htaccess et le rewriting mais Free ne permet pas cela.

Existe-t-il une solution qui fonctionnerait avec pluxml et un hébergement chez Free ?

Cordialement,
Ludo ;o)

Réponses

  • bonjour,
    Il y a toujours une solution :)

    par ".htaccess" c'est pas pour vous mais un peux de patience ...

    Editer le fichier ".htaccess" insérer les lignes suivantes:
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://pluxml.org/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.pluxml.org/.*$ [NC]
    RewriteRule .*.gif$ - [F]
    
    Explications :

    1) Options +FollowSymlinks : Le serveur est autorisé à suivre les liens symboliques.

    2) RewriteEngine on : Lancement du moteur RewriteEngine d'apache.

    3) RewriteCond %{HTTP_REFERER} !^http://pluxml.org/.*$ [NC]
    Tout simplement si l'adresse d'ou l'on vient ne commence pas par (dans notre cas)

    1. chemin interne
    2. http://pluxml.org/
    3. http://www.pluxml.org/

    alors execute la régle RewriteRule .*.gif$

    vous pouvez réecrite la régle pour autoriser plusieurs fichiers
    RewriteRule .*\.(gif|png|jpe?g|pdf)$ - [F]
    
    Et enfin la lettre entre [] appelé [flags] représente l'erreur à renvoyer, ici on a utilisé [F] pour 'forbiden' plus connu sous Erreur 403.

    revenons maintenant à votre problème ....

    il existe un code php "CHImageGuard" préserver votre bande passante sans l'utilisation de fichier ".htaccess" :P
    <?php
    
    $imagedir = "/chemin/absolu/répertoire/de-vos-images/" ;
    
    // les sites qui peuvent afficher vos images ?
    $validprefixes = array (
    "pluxml.org",
    "www.pluxml.org"
    ) ;
    
    // url de votre site que les visiteurs seront dirigés ici s'ils tape
    // "http://www.example.com/chimage.php"
    $homepage = "http://www.pluxml.org/" ;
    
    // votre email si vous souhaitez être informé lorsque quelqu'un tente d'utiliser vos images
    // pour activer supprimer le prefix "//"
    //$email = "vous@pluxml.org" ;
    
    // ------------ FIN DE LA SECTION CONFIGURABLE ------------
    
    
    // ---------- NE MODIFIE RIEN APRES CETTE LIGNE ----------
    
    function isreferrerokay ( $referrer, $validprefixes )
    {
    $validreferrer = 0 ;
    $authreferrer = current( $validprefixes );
    while ($authreferrer) {
    if (eregi( "^https?://$authreferrer/", $referrer )) {
    $validreferrer = 1 ;
    break ;
    }
    $authreferrer = next( $validprefixes );
    }
    return $validreferrer ;
    }
    
    //--------------------------------------------------------
    
    $image = $_GET['image'] ;
    $referrer = getenv( "HTTP_REFERER" );
    
    if (isset($_GET['image'])) {
    
    if (empty($referrer) ||
    isreferrerokay( $referrer, $validprefixes )) {
    
    $imagepath = $imagedir . $image ;
    
    $imageinfo = getimagesize( $imagepath );
    if ($imageinfo[2] == 1) {
    $imagetype = "gif" ;
    }
    elseif ($imageinfo[2] == 2) {
    $imagetype = "jpeg" ;
    }
    elseif ($imageinfo[2] == 3) {
    $imagetype = "png" ;
    }
    else {
    header( "HTTP/1.0 404 Not Found" );
    exit ;
    }
    
    header( "Content-type: image/$imagetype" );
    @readfile( $imagepath );
    
    }
    else {
    
    if (isset($email)) {
    mail( $email, "Alerte tentative vol de bande passante.",
    "Attention:\n\n$referrer\nimage cible\n$image\n",
    "From: CHImageGuard <$email>" );
    }
    header( "HTTP/1.0 404 Not Found" );
    }
    }
    else {
    header( "Location: $homepage" );
    }
    
    ?>
    
    $imagedir c'est le chemin absolu pour arivé sur le répertoire de vos images (person ne doit connaitre le nom de se dossier) !

    pour trouver le chemin absolu créer un fichier appelé "chemin.php" avec le code :
    <? echo realpath('chemin.php'); ?>
    
    tapez URL de l'endroit où se trouve "chemin.php" exemple: http://pluxml.org/chemin.php
    vous avez votre chemin absolu :)
    par exemple le chemin absolu du site pluxml.org:
    "/srv/flaprdweb01/data/web-users/pluxprdadm/pluxml.org/"

    pour afficher vos image
    <image src="chimage.php?image=nom-de-votre-image.gif">
    ou
    <image src="http://pluxml.org/chimage.php?image=nom-de-votre-image.gif">
    
    source: http://www.thesitewizard.com/archive/protectimages.shtml

    merci pour votre patience :p
    @++
  • Ludo_17Ludo_17 Member
    novembre 2010 modifié
    merci smed79 pour cette réponse détaillée.

    J'avais trouvé quelque chose ressemblant à cette solution "CHImageGuard " qui consiste à passer par un fichier php pour afficher l'image. L'inconvénient est qu'il faut réécrire l'ensemble des liens images du site...

    bon, mais le mien n'est pas encore très volumineux... Pour l'instant, j'ai tout simplement mis un htaccess dans le dossier data avec un deny from suivi de l'IP du site qui me gênait le plus, c'est radical ;)

    je garde précieusement cette solution,
    merci encore,
    cordialement,
    Ludo
  • Pourquoi ne pas simplement désactiver le clic droit sur le site? Ce n'est pas possible sur Free ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    parce que ce n'est tout simplement pas efficace. la désactivation du clic droit ne peut se faire que par javascript. il suffit de désactiver javascript dans le navigateur et le tour est joué.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • C'est rudimentaire en plus par javascript. Ca bug une fois sur deux chez certains ...

    Un utilsateur averti vera l'url de l'image dans le code source avec "viewsource:" avant l'url, et ca, il y a aucun moyen de le contrer.

    Sur un forum, j'avais vu un script en php qui combinait les images a du flash je crois automatiquement avec le nombre de pixel exacte, c'est efficace en y pensant.
  • Azrielo a écrit:
    Sur un forum, j'avais vu un script en php qui combinait les images a du flash ...
    SWFir ou SWF Image Replacement : http://www.swfir.com mais le site est HS (Temporarily Unavailable)

    télécharger le script ici : http://www.mediafire.com/?32qwwb8wi3mwudd

    @++
Connectez-vous ou Inscrivez-vous pour répondre.