- Pour résoudre l’ancien problème de sécurité du Web lié à la divulgation de l’historique de navigation des utilisateurs via le style des liens
:visited, une nouvelle fonctionnalité a été introduite
- À partir de Chrome 136, l’historique
:visited est désormais « partitionné » (partitioning), ce qui améliore l’architecture de manière à bloquer ces attaques à la source
- La fonctionnalité permettant de distinguer visuellement les liens visités est conservée, tout en étant conçue pour empêcher son exploitation par d’autres sites
Explication du partitionnement des liens :visited
- Dans l’ancien fonctionnement, lorsqu’un lien était cliqué, il apparaissait comme
:visited sur n’importe quel site
- Il s’agissait d’un défaut de sécurité de conception permettant à un site malveillant de suivre l’historique de navigation d’un utilisateur
- Exemple : après avoir cliqué sur un lien vers Site-B depuis Site-A, si le même lien figurait aussi sur Site-Evil, Site-B apparaissait comme
:visited, ce qui permettait de savoir si l’utilisateur l’avait déjà visité
- Dans la nouvelle architecture, l’historique de visite est stocké uniquement pour la combinaison « site A + cible du lien B »
- Autrement dit, sur Site-Evil, le lien n’apparaît pas comme
:visited, puisque l’utilisateur ne l’a pas cliqué dans ce contexte
- En conséquence, l’historique n’est plus stocké de façon globale (
global), mais séparé selon « l’URL du lien + le site de premier niveau + l’origine de la frame »
Gestion des liens au sein d’un même site
- Supposons qu’un utilisateur effectuant des recherches sur les types de métaux ait cliqué, sur
metals.com, sur les pages chrome et brass de site.wiki
- Plus tard, lorsqu’il visite la page gold de
site.wiki, les liens vers chrome et brass ne s’affichent pas comme :visited (car le contexte du clic est différent)
- Pour corriger cela, une exception
self-links a été introduite
- Les liens vers des sous-pages d’un même site s’affichent comme
:visited même s’ils n’ont pas été cliqués dans exactement le même contexte
- Cela est autorisé car un site peut déjà suivre l’historique de navigation de ses propres utilisateurs, et il a donc été jugé qu’aucune information supplémentaire n’était exposée
- En revanche, cette exception ne s’applique pas aux sites tiers ni aux liens tiers dans des
iframe
État du déploiement de la fonctionnalité
1 commentaires
J’avais aussi essayé d’utiliser
:visitedsur GeekNews, mais à cause des contraintes de sécurité, il n’y avait presque rien de faisable, donc j’avais fini par abandonner.Si tout cela est pris en compte, il sera peut-être possible d’avoir des styles bien plus variés.