web-dev-qa-db-fra.com

Empêcher le téléchargement de fichiers tout en permettant leur visualisation

Nous avons un site avec une zone de connexion permettant aux clients de télécharger les documents que le client télécharge pour eux. Vous avez des documents "sensibles", mais il est interdit au client de les rendre disponibles pour le téléchargement, mais ils sont autorisés à s'afficher dans la zone de connexion, à condition que le fichier ne puisse pas être téléchargé par l'utilisateur.

Évidemment, dès que l'information est affichée à l'écran, il y a moyen de la capturer, mais je pense que tant qu'il n'y a pas de fichier> enregistrer (ou clic droit> enregistrer sous) type d'option possible, tout va bien. Mieux encore, si les informations ne pouvaient même pas être copiées/collées. Des idées comment quelque chose comme ça pourrait être réalisé?

3
user37714

Si ce n’est pas trop compliqué, vous pouvez en faire une "capture d’écran" et l’afficher sur la page. Ils peuvent enregistrer l'image, mais pas le texte/contenu réel.

Une autre astuce consiste à placer un div transparent, désactivant le clic droit pour les utilisateurs moins expérimentés.

Vous pouvez également créer un getMeTheFile.php et l'utiliser pour récupérer les fichiers. Dans ce fichier PHP, vérifiez si vous êtes dans l'ensemble de la page ou ouvert directement (un clic droit -> enregistrer serait un appel direct).

Je ne pense pas que vous puissiez arrêter cela à 100%, seulement lever quelques obstacles.

3
Martijn

Nous avons un site avec une zone de connexion permettant aux clients de télécharger les documents que le client télécharge pour eux. Vous avez des documents "sensibles", mais il est interdit au client de les rendre disponibles pour le téléchargement, mais ils sont autorisés à s'afficher dans la zone de connexion, à condition que le fichier ne puisse pas être téléchargé par l'utilisateur.

Malheureusement, du moins si nous supposons que par "fichier", vous entendez vraiment "le contenu téléchargé", , il s'agit d'une combinaison impossible.

C'est impossible parce que pour afficher quelque chose qui se trouve sur Internet, l'ordinateur utilisé pour l'afficher doit d'abord télécharger ces données sur une sorte de support local (même si ce n'est que dans la RAM). Si le navigateur peut télécharger les données, un utilisateur suffisamment motivé peut capturer le flux téléchargé et le stocker. 99% du temps, ce serait probablement plus facile que ça; Il existe des outils de débogage de développement Web qui rendraient ces choses relativement faciles, même.

Comme il a été souligné, vous pouvez mettre en place des barrages routiers. Voici quelques idées:

  • Javascript pour bloquer un clic droit pour faire apparaître un menu contextuel.

  • Un moteur de rendu basé sur Flash ou Java qui ne permet pas d’enregistrer.

  • Un élément transparent <DIV> au-dessus de l'élément d'affichage (mais cela dépend des éléments spécifiques susceptibles d'avoir une incidence sur la navigation dans le document, par exemple).

  • Vérifiez l'en-tête HTTP Referer côté serveur et envoyez les données uniquement si elles correspondent à vos attentes.

  • Utilisez HTTPS, peut-être même avec un certificat client, pour empêcher le reniflage de flux.

  • Effectuez le rendu en fichiers PDF protégés et rendez uniquement ces fichiers disponibles.

Au final, cependant, ce seront des barrages routiers . Ils ne peuvent pas empêcher de télécharger le contenu, précisément parce que le contenu doit être téléchargé sous une forme quelconque pour être affiché. Voici quelques idées permettant à un utilisateur de contourner les mesures ci-dessus:

  • Javascript pour bloquer un clic droit pour faire apparaître un menu contextuel. Désactivez Javascript côté client ou utilisez un moyen d'accomplir la même chose sans utiliser le bouton de la souris en question sur les éléments protégés.

  • Un moteur de rendu basé sur Flash ou Java qui ne permet pas d’enregistrer. Captures d'écran du contenu rendu avec un magnificantion approprié, assemblées manuellement ou automatiquement. Également téléchargé le sniff de flux de données en utilisant un renifleur de paquets comme Wireshark ou tcpdump.

  • Un élément <DIV> transparent au-dessus de l'élément d'affichage (mais en fonction des spécificités pouvant avoir une incidence sur des éléments tels que la navigation dans le document). Utilisation d'une extension modifiant le DOM, comme Adblock Plus ou Firebug, pour supprimer ou désactiver l'élément incriminé.

  • Vérifiez l’en-tête HTTP Referer côté serveur et n’envoyez les données que si elles correspondent à vos attentes. Utilisez un agent utilisateur qui permet de définir explicitement le référant sur une requête externe, telle que Wget (fonctionne également avec les cookies, etc.).

  • Utilisez HTTPS, peut-être même avec un certificat client, pour empêcher le reniflage de flux. Une attaque traditionnelle de type Man-in-the-Middle contre le flux HTTPS.

  • Effectuez le rendu en fichiers PDF protégés et rendez uniquement ces fichiers disponibles. Utilisez un _ PDF spectateur tiers qui n'honore pas la protection (il existe plusieurs _ spectateurs open source PDF qui pourraient, s'ils n'existaient pas déjà, probablement assez facilement par quelqu'un avec les connaissances appropriées, être adapté pour ignorer les indicateurs de protection).

En fin de compte, , vous devrez discuter avec votre client et déterminer exactement quels sont ses besoins. Peut-être qu'un ou plusieurs de ces éléments fourniront une protection suffisante. Mais vous devrez leur dire d'avance: il n'est pas possible d'empêcher le téléchargement tout en permettant l'affichage, car l'affichage implique le téléchargement. Qu'il s'agisse d'un Le problème est un autre problème qui dépend de l'analyse de risque du client dans le cas particulier.

3
a CVn

Si les documents sont des fichiers PDF ou peuvent être convertis en fichiers PDF, certaines options permettent de restreindre l'utilisation du document, comme l'impossibilité d'imprimer, de copier/coller ou d'extraire le contenu. il. Vous devrez probablement acheter une application auprès d'Adobe ou de Foxit pour créer ces PDF protégés.

0
ZippyV