- 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
:visited em 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.wiki a partir do metals.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
:visited mesmo 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
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.