- 오래된 웹 보안 문제인
:visited
링크 스타일링을 통한 "사용자 방문 이력 노출" 문제를 해결하기 위해 새로운 기능을 도입
- Chrome 136부터
:visited
기록을 "분할 저장(partitioning)"함으로써, 이 공격들을 원천 차단할 수 있는 구조로 개선
- 방문한 링크를 시각적으로 구분하는 기능은 유지하면서, 다른 사이트에서 이를 악용할 수 없도록 설계됨
:visited
링크 분할 저장 방식 설명
- 기존 방식에서는 링크를 클릭하면 그 링크가 어떤 사이트에서든
:visited
상태로 보여졌음
- 이는 악성 사이트가 사용자의 방문 이력을 추적할 수 있게 만드는 설계상의 보안 결함이었음
- 예시: Site-A에서 Site-B 링크를 클릭한 후, Site-Evil에서도 같은 링크가 있을 경우, Site-B는
:visited
로 표시되어 사용자의 방문 여부를 알 수 있었음
- 새로운 구조에서는 "사이트 A + 링크 대상 B"라는 조합으로만 방문 기록을 저장함
- 즉, Site-Evil에서는 사용자가 해당 링크를 클릭하지 않았기 때문에
:visited
로 표시되지 않음
- 결과적으로 방문 기록은 더 이상 전역(global)으로 저장되지 않고, "링크 URL + 최상위 사이트 + 프레임 출처"를 기준으로 분리 저장됨
동일 사이트 내 링크 처리 방식
- 금속 종류를 조사 중인 사용자가
metals.com
에서 site.wiki
의 chrome과 brass 페이지를 클릭했다고 가정
- 이후,
site.wiki
의 gold 페이지를 방문했을 때 chrome과 brass 링크는 :visited
로 표시되지 않음 (클릭한 맥락이 다르기 때문)
- 이를 개선하기 위해
self-links
예외 처리 도입됨
- 동일 사이트 내의 서브페이지 링크는 동일한 컨텍스트에서 클릭하지 않았더라도
:visited
로 표시됨
- 이는 사이트가 자체적으로 사용자 방문 이력을 추적할 수 있기 때문에 추가적인 정보 노출이 없다고 판단하여 허용된 것임
- 단, 제3자 사이트나 iframe 내 제3자 링크에는 이 예외가 적용되지 않음
기능 도입 현황