web-dev-qa-db-fra.com

Comment empêcher le téléchargement d'images et de fichiers vidéo depuis mon site Web?

Comment empêcher le téléchargement d'images et de fichiers vidéo depuis mon site Web? C'est possible? Quelle serait la meilleure façon de faire cela?

33
Haim Evgi

Non, ce n'est pas possible.

Si vous pouvez le voir, vous pouvez l'obtenir.

79
Josh Leitzel

Ne les publiez pas sur votre site.

Sinon, ce n'est pas possible.

15
Chris Ballance

Les images doivent être téléchargées pour être consultées par le client. Les vidéos sont un cas similaire, dans de nombreux scénarios. Vous pouvez configurer des scripts proxy pour diffuser les fichiers, mais cela ne résout pas vraiment le problème d'empêcher l'utilisateur d'obtenir sa propre copie. Pour une discussion plus approfondie de ce sujet, voir la question Comment puis-je empêcher/rendre difficile le téléchargement de ma vidéo flash?

10
Sampson

Je voudrais ajouter un commentaire plus philosophique. L'intention de l'Internet, en particulier du World Wide Web, est de partager des données. Si vous ne voulez pas que les gens téléchargent une image/vidéo/document, ne le mettez pas sur le Web. C'est vraiment aussi simple que cela. Trop de gens pensent qu'ils peuvent imposer leurs propres règles à une conception existante. Ceux qui veulent publier du contenu sur le Web et contrôler sa distribution cherchent à avoir leur gâteau et à le manger aussi.

7
A. L. Flanagan

Bref, non. Si quelqu'un peut voir une image ou une vidéo dans son navigateur, il l'a, par définition, téléchargé. C'est ainsi que le Web fonctionne - il est basé sur un serveur client. Tout ce que vous pouvez voir dans votre navigateur (client) a été transféré sur votre ordinateur à partir du site Web distant (serveur).

7
Dan Diplo

En HTML standard, je n'en sais rien de toute façon.

Vous n'avez pas vraiment dit, mais je suppose que vous rencontrez des problèmes avec les gens lien profond dans votre conten. Si tel est le cas et que vous êtes ouvert au code côté serveur, je pense que cela pourrait fonctionner:

  1. Créez une page qui accepte un identifiant numérique, le mappe sur un chemin de fichier serveur, ouvre ce fichier, écrit le binaire directement dans le flux de réponse.
  2. Sur la demande de page, générez un tas d'ID aléatoires et mappez-les aux URL réelles des médias et stockez cet objet de mappage côté serveur quelque part (en session?) Avec une durée de vie limitée.
  3. Rendez vos pages avec vos liens multimédias pointant vers la nouvelle page multimédia avec l'ID approprié comme argument de chaîne de requête.
  4. Effacez l'objet de mappage et générez tous les nouveaux liens à chaque publication.

Cette :

  1. n'empêchera pas les gens de télécharger à partir de votre page
  2. n'est certainement pas aussi léger que le HTML standard
  3. et a son propre ensemble de problèmes.

Mais c'est un aperçu général d'un processus réalisable qui pourrait vous aider à empêcher les utilisateurs de créer des liens profonds.

6
John MacIntyre

Comme beaucoup l'ont dit, vous ne pouvez pas empêcher quelqu'un de télécharger du contenu. Tu ne peux pas.

Mais vous pouvez le rendre plus difficile.

Vous pouvez superposer des images avec un div transparent, ce qui empêchera les gens de cliquer avec le bouton droit sur celles-ci (ou, définir l'arrière-plan d'un div sur l'image aura le même effet).

Si vous êtes préoccupé par la réticulation (c.-à-d. Que d'autres personnes établissent un lien vers vos images, vous pouvez vérifier le référent HTTP et rediriger les demandes provenant d'un domaine qui n'est pas le vôtre vers "autre chose").

5
David Wolever

Comme le navigateur doit transférer le contenu pour l'afficher (texte, images, vidéos), les données sont déjà sur l'ordinateur du client lorsque le site Web est affiché. Les réponses précédentes donnent peu de conseils sur la façon de rendre plus difficile pour les utilisateurs non expérimentés de saisir le contenu. Voici quelques directions:

  • Général
    • Superposez le contenu respectif avec un <DIV> Transparent ou une image transparente (comme décrit dans certaines réponses à cette question)
    • Ouvrez le site Web dans un jeu de cadres, afin que l'enregistrement puisse manquer le contenu du cadre.
    • Ouvrez le site Web via window.open() pour masquer la barre de menus.
    • Désactiver les clics droit via JavaScript (non recommandé en raison de tous les effets secondaires sur la convivialité)
    • Chargez le code HTML de la page à partir d'un autre fichier (qui peut rechercher un référent spécifique ou qui peut être ROT13) via JavaScript, il est donc plus difficile d'accéder au code source.
    • Dites au navigateur que tout le contenu est display:none Pour l'imprimante (quelque chose comme @media print { body, div, p { display: none } })
    • Utilisez JavaScript pour masquer le contenu avant qu'un client ne fasse une capture d'écran (voir Empêcher l'utilisateur d'utiliser "Print Scrn" )
    • Essayez de désactiver ou d'écraser le presse-papiers (voir ce message )
  • Images
    • N'utilisez pas la balise <img> Pour les images, mais définissez l'image comme arrière-plan pour un <DIV>
    • Enveloppez les images dans des SVG ou des films Flash pour les rendre très difficiles d'accès dans un format utilisable.
    • Désactivez la mise en cache des images (via la balise <meta> Ou en définissant l'en-tête approprié lors de la livraison du serveur), afin qu'elles ne soient pas stockées dans le cache du navigateur (accessible de façon illimitée sur l'ordinateur du client).
    • Couper une image en plusieurs parties, il faut donc un travail supplémentaire pour reconstruire l'image entière
    • Ajoutez onmousedown événements aux images, par exemple, affichez une alerte de copyright.
    • Livrez l'image via un script serveur (par exemple, PHP) et vérifiez le référent.
  • Vidéos
    • Diffusez des vidéos pour empêcher le téléchargement simple via URL.
    • Enveloppez des vidéos dans un film Flash.
    • Utilisez un format désagréable qui prend en charge DRM.
  • Des textes
    • Rendre le texte non sélectionnable (voir Comment rendre le texte HTML non sélectionnable )
    • En plus de la superposition, enveloppez le texte dans JavaScript (par exemple, après ROT13 ou chargé dynamiquement à partir d'un deuxième fichier), de sorte que le texte ne soit pas directement disponible dans le code source.
    • Convertir des textes en images (cela peut diminuer la qualité d'affichage), SVG ou Flash

Encore une fois, je répète que rien de tout cela n'empêchera un utilisateur expérimenté de saisir le contenu (par exemple en créant un screenshop et - éventuellement - en exécutant l'OCR dessus). Parfois, c'est aussi simple que d'utiliser les outils de développement du navigateur ou d'utiliser le site Web sans JavaScript. Pourtant, cela rendra les utilisateurs inexpérimentés plus difficiles, de sorte qu'ils peuvent rechercher une source plus facile à saisir.

Gardez également à l'esprit que les techniques ci-dessus affecteront les moteurs de recherche lors de la lecture du contenu de la page (si vous êtes intéressé à les bloquer, commencez par un robots.txt).

Merci pour toutes autres idées pour compléter la liste ci-dessus!

4
BurninLeo

De plus, cela ne fait pas de mal de filigraner vos images avec Photoshop ou même dans Lightroom 3 maintenant. Assurez-vous que le filigrane est clair et bien visible sur votre image. De cette façon, s'il est téléchargé, au moins vous obtenez la publicité!

3
Jordan

C'est ainsi que je le fais au cas où quelqu'un à l'avenir se poserait la question.

Je mets cela dans le fichier .htaccess sur le serveur racine:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com.*$ [NC]
RewriteRule \.(mp4|avi)$ - [F]

Cela les empêche de dire d'aller sur domain.com/videos/myVid.mp4 et de l'enregistrer à partir de là.

2
agon024

vous pouvez réduire la possibilité mais pas l'éliminer ...

2
Badfish

Mettez votre image ou vidéo au format flash. Fonctionne très bien.

1
Ferrari

Vous pouvez marquer des dossiers ou des fichiers afin qu'ils n'aient pas d'accès en lecture (aucun des serveurs Web principaux ne le prend en charge). Cela vous permet de les stocker sur le serveur sans aucun niveau d'accès au monde extérieur. Vous pouvez le faire si vous disposez d'un service qui génère des images pour que quelqu'un d'autre puisse les télécharger ultérieurement, ou si vous utilisez votre compte Web pour un accès FTP, mais que vous ne voulez pas que quiconque affiche les fichiers. (c'est-à-dire télécharger un fichier .bak sur le serveur pour que quelqu'un d'autre le transfère à nouveau vers FTP).

Cependant, comme d'autres l'ont dit, il n'est pas possible de pénétrer dans des zones de droit d'auteur où les gens peuvent voir l'image ou la vidéo sans les enregistrer localement, bien qu'il existe des outils pour décourager l'utilisation illégale.

1
Scott Forsyth - MVP

Non ce n'est pas. Vous pouvez bloquer les clics droit et autres choses similaires, mais si quelqu'un veut le télécharger, il le fera, croyez-moi;)

1
fphilipe

Dès qu'ils voient votre page contenant l'image ou la vidéo, l'élément est téléchargé dans le dossier temporaire de leur navigateur. Donc, si vous ne voulez pas le télécharger, ne le postez pas.

1
Jeff Siver

Il s'agit d'un ancien article, mais pour la vidéo, vous voudrez peut-être envisager d'utiliser MPEG-DASH pour obscurcir vos fichiers. De plus, il offrira une meilleure expérience de streaming à vos utilisateurs sans avoir besoin d'un serveur de streaming séparé. Plus d'informations dans cet article: Comment désactiver le téléchargement vidéo/audio dans les pages Web?

1
TimHayes

Vous pouvez définir l'image comme image d'arrière-plan et avoir une image de premier plan transparente.

0
user3387591

Vous ne pouvez pas arrêter le vol d'images/vidéos, mais vous pouvez rendre la tâche plus difficile pour les utilisateurs normaux, mais vous ne pouvez pas la rendre plus difficile pour les programmeurs comme nous (je veux dire les voleurs qui connaissent peu la programmation Web).

Vous pouvez essayer quelques astuces:

1.) Utiliser Flash comme YouTube et de nombreux autres sites comme http://www.funnenjoy.com le fait.

2.) Réglage de chevauchement de div ou de pic d'arrière-plan (mais les utilisateurs peu sensés peuvent facilement enregistrer toutes les ressources en ouvrant l'élément d'inspection ou une autre option de développeur).

3.) Vous pouvez désactiver le clic droit et des touches spécifiques comme CTRL + S et d'autres possibles avec JavaScript, mais le principal inconvénient est que si l'utilisateur désactive JavaScript, toutes nos astuces échouent.

4.) Enregistrez l'image dans aucun répertoire en ligne (si vous avez un accès complet au serveur Web) et lisez ces fichiers avec des langages côté serveur comme PHP chaque fois qu'une image/vidéo est requise et changez l'image id de temps en temps ou créer un script qui peut changer automatiquement d'ID après chaque accès.

5.) Utilisez .htaccess dans Apache pour empêcher la liaison de vos images par d'autres sites. vous pouvez utiliser ce site pour générer automatiquement .htacess http://www.htaccesstools.com/hotlink-protection/

0
Ravinder Payal

Insérez un gif transparent 1px x 1px juste à l'intérieur du <body> tag:

<body><img src="route-to-images/blim.gif" class="blimover">

Ensuite, stylisez-le avec ceci:

.blimover {
  width: 100% !important;
  height: 100% !important;
  z-index: 1000 !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

Cela supprimera toute fonctionnalité de clic d'une page, mais cela empêchera certainement les gens de voler du contenu!

Vous pouvez appliquer la même chose à un <div>, <section>, <article> etc, nommez-le en conséquence et évitez que votre copie et/ou vos images soient arrachées.

Rien n'empêche un capture d'écran ... ...

0
redplanet

Je pense que le meilleur moyen est d'empêcher un clic droit sur votre page Web, car c'est le moyen le plus pratique pour un utilisateur normal d'essayer de télécharger le contenu, et vous pouvez le considérer comme une remarque si vous ne pouvez le faire que si vous ne le serez jamais capable d'empêcher un geek ou un pirate informatique de le télécharger, car une fois que le contenu est sur Internet, cela signifie qu'il est déjà dans le domaine public ...

0
Vipul Singh

Certes, toute image que l'utilisateur peut voir pourra être enregistrée sur l'ordinateur et vous ne pouvez rien y faire. Maintenant, si vous voulez bloquer l'accès à d'autres images que l'utilisateur n'est pas censé voir, je le fais de cette façon:

  • Chaque lien est vers le "src" dans votre balise d'image est en fait une demande envoyée à un contrôleur sur le serveur,
  • le serveur vérifie les droits d'accès de cet utilisateur spécifique et renvoie l'image si l'utilisateur est censé y avoir accès,
  • toutes les images sont stockées dans un répertoire qui n'est pas directement accessible depuis le navigateur.

Avantage:

  • L'utilisateur n'aura accès à rien auquel vous ne voulez pas qu'il ait accès

Inconvénient:

  • Ces demandes sont lentes .. surtout il y a beaucoup d'images sur la même page. Je n'ai pas trouvé un bon moyen d'accélérer cela en fait ..
0
Antony P.

Si vous souhaitez que seuls les utilisateurs autorisés obtiennent le contenu, le client et le serveur doivent utiliser le chiffrement.

Pour la vidéo et l'audio, une bonne solution est Azure Media Services, qui dispose d'une protection de contenu et d'un chiffrement. Vous intégrez le lecteur multimédia Azure dans votre navigateur et il diffuse la vidéo à partir d'Azure.

Pour les documents et les e-mails, vous pouvez consulter Azure Rights Management, qui utilise un client spécial. Il ne fonctionne actuellement pas dans les navigateurs Web ordinaires, malheureusement, à l'exception des codes à usage unique et à usage unique.

Cependant, je ne sais pas exactement dans quelle mesure tout cela est sécurisé. Comme d'autres l'ont souligné, du point de vue de la sécurité, une fois que les octets téléchargés sont dans la mémoire RAM de "l'attaquant", ils sont prêts à disparaître. Aucune solution n'est sécurisée à 100% dans ce cas (veuillez me corriger si je me trompe). Comme pour la plupart des dispositifs de sécurité, l'objectif est de rendre les choses plus difficiles, afin que les 99% ne dérangent pas.

0
nmit026