4P by xguru 9일전 | ★ favorite | 댓글 1개
  • 오래된 웹 보안 문제인 :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자 링크에는 이 예외가 적용되지 않음

기능 도입 현황

긱뉴스에서도 :visited 활용해보려고 했는데 보안때문에 거의 되는게 없어서 포기했었는데요.
이게 모두 반영되면 다양한 스타일링이 가능해질지도 모르겠네요.