web-dev-qa-db-fra.com

Comment protéger la vie privée de mes utilisateurs lorsque des boutons de partage social peuvent être pré-récupérés?

Je fais un site avec la vie privée comme l'un de ses sujets principaux. Par la suite, nous voulons faire de la confidentialité une préoccupation en minimisant les violations de la confidentialité des visiteurs de mon site. (Dans ce monde fou, c’est le mieux que nous puissions faire, minimiser). Nous devons ajouter des boutons de médias sociaux (boutons d'intention tels que l'intention de Tweet) pour que les visiteurs puissent partager des articles avec d'autres. Ne pas placer ces boutons du tout n'est pas une option, personne ne convertit le monde en ignorant tout ce qui ne correspond pas à ses idéaux. Nous avons simplement besoin de moyens pour que les gens partagent leurs articles. Mais comment puis-je minimiser l'impact de l'ajout de boutons de médias sociaux sur notre site Web?

Pour les icônes et les polices, nous utilisons uniquement des sources auto-hébergées. Mais bien sûr, l'URL dans ce bouton de partage pointe vers le domaine d'une plate-forme de média social. En tant que webmaster, y a-t-il autre chose que je puisse faire pour empêcher le préextraction de l'URL?

Bien sûr, le navigateur prend éventuellement la décision de procéder à la pré-extraction ou non, mais comment puis-je décourager ce navigateur au mieux de mes capacités?

Une des idées que nous avons est de pointer tous les boutons de médias sociaux vers une page spécialisée de notre propre site, qui redirige ensuite vers le site externe. L'idée serait que le site externe soit toujours appelé à partir de la même page et ne soit donc pas préfiguré par les visiteurs qui n'ont jamais appuyé sur le bouton de partage. Est-ce que cela aiderait ou est-ce que les navigateurs préfèreraient quand même cette page externe? Une redirection comme celle-ci aurait-elle des inconvénients importants?

Alors, quelles options ai-je pour protéger les visiteurs de mon site Web contre le suivi, sans limiter de manière significative l'impact que peut avoir mon site Web? (en supposant que la pré-extraction est la principale préoccupation en matière de suivi)

4
Static Storm

Les boutons eux-mêmes n'ont pas besoin d'être chargés à partir du site social. Par exemple, Facebook et Twitter vous permettent simplement d'ouvrir une fenêtre avec une URL spéciale, qui affiche une fenêtre "Nouveau message" avec l'URL de votre page déjà renseignée.

Pour Facebook, l'URL documentée semble être:

https://www.facebook.com/dialog/share?app_id=<APPID>&display=popup&href=<URL>

ou le plus vieux

https://www.facebook.com/sharer/sharer.php?u=<URL>

Pour Twitter, vous pouvez utiliser:

https://Twitter.com/intent/tweet?text=<URL_or_other_stuff>

Une autre méthode, que j’ai vue à divers endroits, mais qui n’est malheureusement pas très fiable, consiste à retarder l’insertion du code du bouton social sur votre page. . Au lieu de cela, vous créez vos propres boutons qui lorsque vous cliquez dessus insèrent le code JavaScript de Facebook dans la page (et se suppriment eux-mêmes, de sorte que le nouveau bouton se trouve au même endroit). ).

4
grawity

Je ne pense pas que cela se passe comme vous le pensez ...

D'après votre description, il semble que vous vous attendiez à ce que les navigateurs se contentent de suivre les URL pour précharger des pages entières - mais d'après ce que je sais, c'est beaucoup plus explicite que cela ...

L'article "Prétraitement, préchargement, précarçage" sur les astuces CSS peut vous aider à dissiper vos présomptions.

La page wiki sur "prélecture de lien" sauvegarde ceci:

La pré-extraction est réalisée à l'aide d'indications dans les pages Web.

Si nous avions des navigateurs qui suivaient des URL au hasard, toutes sortes de choses commenceraient à se décomposer: les boutons de vote haut/bas seraient " cliqués ", les vues sur les autres pages s'accumuleraient simplement utilisateur visualisant une autre page, etc ...

De plus, rappelez-vous que la plupart d’entre elles sont de toute façon des " allusions " et que les navigateurs n’ont pas à les suivre .


Si vous êtes préoccupé par l’utilisation de ressources d’un autre serveur, la réponse simple est " non ".

Facebook/Twitter/Youtube/etc ... fournira un extrait que vous pourrez insérer dans vos pages pour " comme par magie " obtenir la fonctionnalité ... Vous voudrez éviter cela, où possible. Au lieu de cela, connectez-vous à leurs API publiques lors d'interactions explicites de l'utilisateur (voir la réponse de @ grawity).


Pré-extraction DNS

Ceci demande au navigateur d'interroger un enregistrement DNS maintenant afin de réduire les temps de chargement ultérieurement.

Il nécessite HTML dans la section _<head>_:

_<link rel="dns-prefetch" href="//example.com">
_

Preconnect

Permet au navigateur d'établir une connexion TCP et de terminer la négociation TLS prête à être utilisée (pensez HTTP/2 et connexions multi-utilisations/ traitement en pipeline ):

Il nécessite HTML dans la section _<head>_:

_<link rel="preconnect" href="http://css-tricks.com">
_

Préchargement et préchargement

Récupère une ressource spécifique, prête à l'emploi - la conservant probablement dans la mémoire cache du navigateur - pensez aux images d'un diaporama, etc ... Le préchargement est un must , while Prefetching est un indice .

Ils ont besoin de HTML dans la section _<head>_:

_<link rel="prefetch" href="image.png">
_
_<link rel="preload" href="image.png">
_

Pages de présélection

Charge une page entière - avec tous les actifs et dépendances. Pensez à la séquence de pages " 20 que vous n’attendriez jamais de X " ...

Il nécessite HTML dans la section _<head>_:

_<link rel="prerender" href="http://css-tricks.com">
_

Tous les navigateurs sont différents et évoluent constamment ...

Le prefetch DNS est une chose simple à faire, qui ne transmet pas votre intention au serveur Web, mais interroge le serveur DNS de l'utilisateur ... donc si cela vous concerne, alors le X-DNS-Prefetch-Control l'en-tête que vous avez identifié peut être utile ... mais n'oubliez pas de regarder compatibilité du navigateur - IE, Edge et Safari pourraient ne pas jouer à Nice.

Chrome fait un peu pour anticiper les intentions de l'utilisateur, comme indiqué dans ce grand jeu de diapositives .


En fin de compte, la meilleure option pour la confidentialité est une extension de navigateur (que l'utilisateur devrait installer) - vous ne pouvez pas faire beaucoup pour limiter les actions du navigateur en tant que site Web.

2
Attie

Au lieu de "rouler vous-même", vous pouvez utiliser la bibliothèque shariff. Son objectif est une confidentialité maximale:

https://github.com/heiseonline/shariff

2
bjelli