Comment empecher de télécharger les images en direct ?

  • Auteur de la discussion Auteur de la discussion cnhx
  • Date de début Date de début
WRInaute discret
Bonjour,

Existe t'il un moyen d'empêcher un utilisateur d'afficher le code source source d'une page HTML afin de voir ou sont stockées les images ? Ou est il possible d'empêcher l'affichage de l'image via son URL (càd interdire l'affichage d'une image via http://www.monsite.com/images/mon-image.jpg) ?

En effet, je me suis aperçu de téléchargement des images de mon site en direct (ex. http://www.monsite.com/images/mon-image.jpg) :x . A ma connaissance, le seul moyen de connaître l'URL de ces images est d'afficher le code source de la page d'où ma question.

Merci de votre aide.
 
WRInaute accro
tu peux au pire interdire l'affichage si le referer n'est pas ton site, voir afficher une autre image (genre une qui dit "ce site pille mes images, ouh la honte)
 
WRInaute accro
+1; si tu veux empêcher un site d'afficher directement tes images (cad indiquer leurs URL sur ton site comme source de l'image) tu peux le faire avec le fichier .htaccess.
Celà ne l''empêchera bien sur pas d'enregistrer l'image sur son pc, de l'uploader sur son propre serveur et de l'afficher, mais ca le découragera peut etre.
 
WRInaute discret
nickargall a dit:
+1; si tu veux empêcher un site d'afficher directement tes images (cad indiquer leurs URL sur ton site comme source de l'image) tu peux le faire avec le fichier .htaccess.
Celà ne l''empêchera bien sur pas d'enregistrer l'image sur son pc, de l'uploader sur son propre serveur et de l'afficher, mais ca le découragera peut etre.
e-kiwi a dit:
tu peux au pire interdire l'affichage si le referer n'est pas ton site, voir afficher une autre image (

Intéressant. Et comment je peux interdire via le fichier .htaccess ?
 
WRInaute accro
Si tu veux cibler un site (appelons le www.example.com) qui "hotlink" tes images et leur renvoyer une image pas-touche.jpg de ton site:
Code:
RewriteCond %{HTTP_REFERER} ^http://www.example.com(/)?.*$ [NC]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP)$ http://www.monsite.com/images/pas-touche.jpg
 
WRInaute accro
Justement la question m'intéresse. Avec ce système, il y a moyen d'autoriser certaines url à quand même afficher le hotlink ? Je me prends un peu la tête avec ca en ce moment (voir ici : https://www.webrankinfo.com/forum/t/rewritecond-multiples.107194/#p1020070 et je ne parviens pas à mes fins).

@cnhx
: Tu peux aussi stocker tes images en base de donnée, et les afficher via une fonction php (ce qui te permet de vérifier que le contexte appelant est celui de ton site). Mais c'est plus lourd...
 
WRInaute accro
e-kiwi a dit:
tu peux au pire interdire l'affichage si le referer n'est pas ton site, voir afficher une autre image (genre une qui dit "ce site pille mes images, ouh la honte)

pk au pire ?

<img src="d5r651d25r.php">

la tu peux pas me dire ou l'image est stocké, héhé !!!

l'astuce est bete comme chou, dans le fichier d5r651d25r.php il suffit d'apeler l'image qu'on a pris soin de planquer <--> <?php readfile("rep1/rep2/rep3/rep4/image.gif"); ?>

et en plus on peut empecher le hotlink ecrivant dans le fichier .htaccess
RewriteEngine On
ReWriteRule .*\.gif$ - [F]
 
WRInaute discret
Certes, avec cette technique on contre 80% des internautes qui ne sont pas forcément experts en informatique, mais il reste les 20% !

Effectivement, on peut récupérer l'image avec l'utilisation du plugin Firebug qui nous donnera le code HTML qui a été utilisée.
Il suffit ensuite de faire http://www.monsite.com/d5r651d25r.php et hop ! l'image s'affiche dans le navigateur et a la sauvegarder.

Je me demande donc si la solution la plus simple, est d'incruster un watermark à l'image.
 
WRInaute accro
cnhx a dit:
Il suffit ensuite de faire http://www.monsite.com/d5r651d25r.php et hop ! l'image s'affiche dans le navigateur et a la sauvegarder.
ben non, car dans ton php tu vérifies si le referer vient de ton site et un appel direct de l'url se fait sans envoyer de referer.
Après, comme tu as tout le contenu d'une page en local, pour l'afficher dans ton navigateur, tu as moult possibilités de récupérer ton image. Du genre "page info" de firefox et dans l'onglet media, tu trouveras toutes les images affichées, il ne reste qu'à faire un sauvegarder sous pour avoir ton image
 
WRInaute discret
Conclusion : Comme il existe mille et une manière de récupérer les images, je ne vais donc pas l'empêcher. Par contre je vais incruster un watermark (adresse du site) aux images.
 
WRInaute accro
cnhx a dit:
Conclusion : Comme il existe mille et une manière de récupérer les images, je ne vais donc pas l'empêcher. Par contre je vais incruster un watermark (adresse du site) aux images.
c'est ce que je suis, aussi, en train de faire. Car marre des vils copieurs, dont un certain wrinaute :twisted:
 
WRInaute accro
cnhx a dit:
Avec ce watermark ayant l'adresse du site cela devrait limiter les abus. J'espère :roll:
il peut être coupé sans trop dénaturer la photo
J'ai tenté d'ajouter le watermark carrément en diagonale sur la photo, par contre, se pose le problème du contraste : est-il possible de calculer automatiquement le contraste d'une photo pour pouvoir adapter la luminosité de l'incrustation. Et ça doit être fait en php, car les utilisateurs ne savent pas utiliser un logiciel graphique.
 
WRInaute discret
Je ne suis pas trop embêté, j'ai utilisé PicMarkr qui permet d'uploader 5 images à la fois (moins de 25 Mo au total) pour les protéger avec l'un des trois types de watermark suivants :
  • - Watermark image / logo: Image incrustée sur l'image à protéger
    - Watermark textuel: Texte incrusté sur l'image
    - Watermark "Tiled": Texte ou image répété plusieurs fois sur toute l'image à protéger.

Pour le Watermarking automatique d'une image avec PHP, j'ai trouvé sur le Net ce bout de script PHP "Watermark.php" (Pour faire fonctionner ce script, la librairie GD2+ doit installée.) :
Code:
<?php
header('content-type: image/jpeg');
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($_GET['src']);
$size = getimagesize($_GET['src']);
$dest_x = $size[0] - $watermark_width - 5;
$dest_y = $size[1] - $watermark_height - 5;
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>

L'image est marquée à partir de l'image watermark.png et ce script doit être appelé directement dans la balise image en donnant en paramètre le nom de l'image.

Par exemple :
Code:
<img src="Watermark.php?src=monImage_A_Watermark.jpg" alt='Mon image marquée/>
 
WRInaute accro
cnhx a dit:
Pour le Watermarking automatique d'une image avec PHP,
ça j'ai réussi à le faire, le seul problème étant que le watermark ne devait pas trop dénaturer la photo et qu'il devait être visible.
Par exemple, sur cette vasque en pierre le watermark n'est pas toujours visible, car la transparence devrait dépendre du contraste de la photo. Sur certaines photos le watermark devient trop visible et sur d'autres quasi invisible
 
WRInaute passionné
Salut, sur mon site j'utilise le watermark pour les photos les plus grandes et intéressantes, pour les autres, je demande juste aux 'utilisateurs' de mettre un lien vers le site (avec code dans champs de formulaire).

Cela donne ça.
fond-oreochromisb.jpg


fond-pectoralis.jpg


fond-callochromis.jpg


fond-benthochromis.jpg


fond-gibberosa.jpg


fond-bifrenatus.jpg


8) :mrgreen: :arrow:

++ Benoît.

edit: tiens c'est marrant elle sont trop larges. :idea:
 
WRInaute accro
le problème c'est que sur ta 2° photo, on a du mal à bien voir le watermark du fait du fond. Et quand on automatise ce watermarking, ça n'est pas évident de pouvoir ajuster l'écriture par rapport au fond.
Je fais déjà un redimensionnement automatique du watermark par rapport à la taille de la diagonale, mais pour la luminosité du fond, je n'ai pas trouvé :cry:
 
WRInaute discret
Ou en fixant le % d''opacité ?
du genre ....
Code:
$opacity = 100; // en %
....
 imagecopymerge($background, $overlay, $x, $y, 0, 0, $width, $height, $opacity);
....
 
WRInaute accro
cnhx a dit:
Ou en fixant le % d''opacité ?
justement, c'est cette valeur qui me pose problème pour l'automatisation. Car selon le fait que l'image soit claire ou non, le watermark devient soit proéminent soit invisible
 
WRInaute discret
Une piste .....,

Vu sur PHPNet : imagefilter
Code:
            //find the most opaque pixel in the image (the one with the smallest alpha value)
            $minalpha = 127;
            for( $x = 0; $x < $w; $x++ )
                for( $y = 0; $y < $h; $y++ )
                    {
                        $alpha = ( imagecolorat( $img, $x, $y ) >> 24 ) & 0xFF;
                        if( $alpha < $minalpha )
                            { $minalpha = $alpha; }
                    }

:idea: Déterminer une moyenne, un écart type, ... (mes cours de math sont loins :? ) des valeurs alpha pour fixer la valeur de l'opacité.
 
WRInaute accro
une astuce pour embrouiller l'utilisateur peu scrupuleux consiste a couper l'image en morceaux que l'on affiche dans une table.
 
WRInaute passionné
Faire ça avec une image passe encore, mais faire des milliers de tranches dans des milliers d'images................ ^^

Bref, c'est pas une très bonne solution à mon avis........ ;)
 
WRInaute occasionnel
Leonick a dit:
cnhx a dit:
Avec ce watermark ayant l'adresse du site cela devrait limiter les abus. J'espère :roll:
il peut être coupé sans trop dénaturer la photo
J'ai tenté d'ajouter le watermark carrément en diagonale sur la photo, par contre, se pose le problème du contraste : est-il possible de calculer automatiquement le contraste d'une photo pour pouvoir adapter la luminosité de l'incrustation. Et ça doit être fait en php, car les utilisateurs ne savent pas utiliser un logiciel graphique.

Je génère les Watermarks sur Arles (digital dutch) Ca se fait pas àla volée, il faut modifier tous tes jpgs, mais tu peux régler le contraste facilement.
 
WRInaute discret
J'ai trouvé cet utilitaire sur la toile : Ajax Image Editor.
Cet outil a pas mal de fonctionnalités avec entre autre l'ajout de watermark.
Il est développé avec ExtJS, utilise du PHP côté serveur couplé à la librairie ImageMagick (requise) et peut être être installé sur son site.
 
WRInaute impliqué
ou sinon si vous avez la possbilité de régler la couleur il vous suffit de faire 2 watermark :
1 noir et un blanc par dessus décalé d'1 ou 2 pixels ;)

comme ca quelque soit la luminosité de la photo on verra toujours le watermark
 
WRInaute discret
Excellent :D

Mais ton décalage de 1 ou 2 pixels tu le fais sur la hauteur, la largeur ou sur la diagonale ?
 
WRInaute impliqué
bin tu dois sûrement connaître comme effet, c'est pour faire une ombre déportée...
donc tu décale le blanc de deux pixels vers le haut gauche (diagonale) par rapport au noir

-https://www.google.fr/search?hl=fr&q=texte%20ombre%20port%C3%A9e%20photoshop
 
WRInaute accro
RiPSO a dit:
ou sinon si vous avez la possbilité de régler la couleur il vous suffit de faire 2 watermark :
1 noir et un blanc par dessus décalé d'1 ou 2 pixels ;)

comme ca quelque soit la luminosité de la photo on verra toujours le watermark
je vais tester, dès que j'ai un peu de temps. Car je veux pouvoir le faire directement sur le serveur en php
 
Discussions similaires
Haut