Tornando `:visited` mais personalizado — reforçando a privacidade de links já visitados
(developer.chrome.com)- Para resolver o antigo problema de segurança da web de “exposição do histórico de navegação do usuário” por meio da estilização de links
:visited, foi introduzido um novo recurso - A partir do Chrome 136, ao “particionar o armazenamento” do histórico de
:visited, a estrutura foi aprimorada para bloquear esses ataques na origem - O recurso de diferenciar visualmente links visitados é mantido, mas foi projetado para que outros sites não possam explorá-lo
Explicação de como funciona o armazenamento particionado de links :visited
- No modelo anterior, ao clicar em um link, ele passava a aparecer como
:visitedem qualquer site - Isso era uma falha de segurança de projeto, pois permitia que sites maliciosos rastreassem o histórico de navegação do usuário
- Exemplo: depois de clicar em um link para o Site-B no Site-A, se o mesmo link existisse no Site-Evil, o Site-B apareceria como
:visited, permitindo inferir se o usuário o havia visitado - Na nova estrutura, o histórico de visita é armazenado apenas para a combinação “site A + destino do link B”
- Ou seja, no Site-Evil, como o usuário não clicou nesse link ali, ele não será exibido como
:visited - Como resultado, o histórico de visitas deixa de ser armazenado globalmente e passa a ser separado com base em “URL do link + site de nível superior + origem do frame”
Como os links dentro do mesmo site são tratados
- Suponha que um usuário pesquisando tipos de metal tenha clicado nas páginas de chrome e brass do
site.wikia partir dometals.com - Depois, ao visitar a página gold do
site.wiki, os links para chrome e brass não apareceriam como:visited(porque o contexto do clique foi diferente) - Para melhorar isso, foi introduzida uma exceção para
self-links - Links para subpáginas dentro do mesmo site passam a ser exibidos como
:visitedmesmo que não tenham sido clicados exatamente no mesmo contexto - Isso foi permitido porque se entende que o próprio site já pode rastrear o histórico de navegação do usuário dentro dele, então não há exposição adicional de informação
- Porém, essa exceção não se aplica a sites de terceiros nem a links de terceiros dentro de iframes
Status de adoção do recurso
- Esse recurso foi oficialmente introduzido a partir do Chrome 136
- O Chrome é o primeiro grande navegador a adotar esse recurso
- Desenvolvedores e pesquisadores de segurança podem consultar a proposta no GitHub, enviar opiniões e relatar bugs
- Proposta do recurso no GitHub
- Enviar issues e participar da discussão
- Rastreador de bugs do Chromium
1 comentários
No GeekNews também tentamos usar
:visited, mas por causa da segurança quase nada funcionava, então acabamos desistindo.Se tudo isso for implementado, talvez passe a ser possível fazer vários tipos de estilização.