`:visited`를 더 개인화 하기 - 이미 방문한 링크의 프라이버시 강화
(developer.chrome.com)- 오래된 웹 보안 문제인
: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자 링크에는 이 예외가 적용되지 않음
기능 도입 현황
- 이 기능은 Chrome 136부터 정식 도입됨
- Chrome은 이 기능을 최초로 도입한 주요 브라우저임
- 개발자 및 보안 연구자들은 GitHub 페이지에서 제안서 확인, 의견 제시, 버그 제보 가능
- 기능 제안서 GitHub
- 이슈 제안 및 토론 참여
- Chromium 버그 트래커
긱뉴스에서도 :visited 활용해보려고 했는데 보안때문에 거의 되는게 없어서 포기했었는데요.
이게 모두 반영되면 다양한 스타일링이 가능해질지도 모르겠네요.