Yayınlanma tarihi: 2 Nisan 2025
Bir bağlantıyı tıkladığınızda ne olur? Mor renge dönüyor.
İnternetin ilk günlerinden beri siteler, kullanıcıların daha önce tıkladığı bağlantılara özel stiller uygulamak için CSS :visited
seçicisini kullanmaktadır. Siteler, :visited
seçiciyi kullanarak kullanıcı deneyimini iyileştirebilir ve kullanıcılarının web'de gezinmesine yardımcı olabilir. Ancak ziyaret edilen bağlantıların özelleştirilebilirliği zaman içinde arttıkça güvenlik araştırmacıları tarafından keşfedilen saldırıların sayısı da arttı.
Bu saldırılar, kullanıcının ziyaret ettiği bağlantıları açığa çıkarabilir ve web'de gezinme etkinliğiyle ilgili ayrıntıları sızdırabilir. Bu güvenlik sorunu 20 yıldan uzun süredir web'i rahatsız ediyor. Tarayıcılar, bu geçmiş algılama saldırılarını azaltmak için çeşitli geçici çözümler uyguladı. Bu önlemler sayesinde saldırılar yavaşlatılmış olsa da ortadan kaldırılmamıştır.
Chrome 136'tan itibaren Chrome, bu saldırıları geçersiz kılan ilk büyük tarayıcı oldu. Bu işlem, :visited
bağlantı geçmişi bölümlenerek yapılır.
:visited
Bağlantı bölme nedir?
Daha önce ziyaret ettiğiniz bağlantıları görüntülemek için tarayıcının zaman içinde ziyaret ettiğiniz sayfaları takip etmesi gerekir. Buna :visited
geçmişiniz denir. CSS :visited
seçicisini kullanarak ziyaret edilen bağlantıları ziyaret edilmeyenlerden farklı şekilde biçimlendirebilirsiniz:
:visited {
color: purple;
background-color: yellow;
}
:visited
geçmişi geçmişte bölümlendirilmemişti. Bu, :visited
seçici kullanılarak :visited
geçmişinin nerede gösterilebileceğiyle ilgili herhangi bir kısıtlama olmadığı anlamına geliyordu. Tıkladığınız bağlantılar, bu bağlantıyı gösteren her sitede :visited olarak gösterilir. Bu, saldırıların kullanıcının tarama geçmişiyle ilgili bilgileri açığa çıkarmasına olanak tanıyan temel tasarım hatasıydı.
Aşağıdaki örneği inceleyin. A sitesine göz atarken B sitesine gitmek için bir bağlantıyı tıklarsınız. Bu senaryoda B sitesi :visited
geçmişinize eklenir. Daha sonra, Site Evil'ı ziyaret edebilirsiniz. Bu site de B sitesine bir bağlantı oluşturur. Bölme olmadan, Kötü Site'deki bağlantıyı tıklamasanız bile Kötü Site, B sitesine giden bağlantıyı :visited
olarak gösterir. Ardından Kötü Site, bağlantının :visited
olarak biçimlendirilip biçimlendirilmediğini öğrenmek için bir güvenlik açığını kullanabilir. Böylece, geçmişte B sitesini ziyaret ettiğinizi öğrenerek tarama geçmişinizle ilgili bilgileri sızdırabilir.
Bölme yapmadan önce bir bağlantıyı tıkladığınızda:
Bu bağlantıyı gösteren her sitede :visited olarak gösterilir.
Bölme, bir bağlantıyı yalnızca bu siteden daha önce tıkladıysanız ziyaret edilmiş olarak göstererek tarama geçmişinizi korur. Bu siteyle daha önce etkileşimde bulunmadıysanız bağlantıları :visited
olarak biçimlendirilmez.
Önceki örneği, bölümlendirmenin etkin olduğu şekilde düşünün. A sitesine göz atarken B sitesine gitmek için bir bağlantıyı tıklarsanız "A sitesi + B sitesi" kombinasyonu :ziyaret edilenler geçmişinize kaydedilir. Bu sayede, Kötü Site'yi ziyaret ettiğinizde "Site A + Site B " girişimizin her iki parçasıyla da (ilk olarak bağlantıyı tıkladığınız bağlam) eşleşmediği için Site B'ye giden bağlantı :visited
olarak gösterilmez. Kötü Site'de tarama geçmişi gösterilmediğinden, kötüye kullanımdan yararlanamaz. Bu nedenle, tarayıcı geçmişiniz güvendedir.
Bölme işleminden sonra bir bağlantıyı tıkladığınızda:
Yalnızca daha önce tıkladığınız yerlerde :visited
olarak gösterilir.
Kısaca, bölümlendirme, bağlantılarınızı tıklandıkları yerle ilgili ek bilgilerle birlikte depolama işlemidir. Chrome'da bunlar: bağlantı URL'si, üst düzey site ve çerçeve kaynağı. Bölme etkinleştirildiğinde :visited
geçmişiniz artık herhangi bir sitenin sorgulayabileceği genel bir liste değildir. Bunun yerine, :visited
geçmişiniz "bölünür" veya bu bağlantıyı ilk kez ziyaret ettiğiniz bağlama göre ayrılır.
Aynı sitedeki diğer sayfaların bağlantıları ne olacak?
İnternette gezinirken, hepsi aynı sitedeki farklı alt sayfalara yönlendiren birçok bağlantıyı tıklayabilirsiniz. Örneğin, farklı metal türlerini araştırırken "krom" ve "pirinç" için Site.Wiki
sayfalarını ziyaret edebilirsiniz.
Katı bir bölümlendirme uygulamasında, altın için Site.Wiki
sayfasındaki kullanıcılara krom ve pirinç sayfalarının bağlantıları :visited
olarak gösterilmez. Bunun nedeni, kullanıcının bu sayfaların her birini, altın için Site.Wiki
sayfasıyla eşleşmeyen bir üst düzey siteden tıklamasıdır.
Bu senaryoda kullanıcı deneyimini iyileştirmek ve aynı zamanda bölümlendirmenin gizlilik ve güvenlik korumalarını sunmak için kendi kendine bağlantılar için bir istisna sunduk. Özet olarak, bir site kendi alt sayfalarını :visited
olarak gösterebilir. Bu bağlantılar daha önce bu bağlamda tıklanmasa bile. Sitelerin, kullanıcıların alt sayfalarını ziyaret edip etmediğini izlemenin başka yöntemleri olduğundan kendi kendine bağlantıların kullanıma sunulmasıyla bu sitelere yeni bilgi verilmez.
Bölme işlemi, siteler arası izlemeye karşı koruma sağlamaya ve aynı kaynak politikasını uygulamaya devam eder. Ancak bunun yalnızca bir sitenin kendi alt sayfalarına yönlendiren bağlantılar için geçerli olduğunu unutmayın. Üçüncü taraf sitelerine veya üçüncü taraf iFrame'lerine yönlendiren bağlantılar bu istisna için uygun değildir.
"Kendine bağlantılar" hariç tutma işleminden sonra:
Uygulama durumu
:visited
güvenlik ve gizliliğindeki bu iyileştirmeler, Chrome 136 sürümünden itibaren kullanılabilir. Chrome, kullanıcılar için bu korumaları uygulayan ilk tarayıcı oldu.
Etkileşim kurma ve geri bildirim paylaşma
- Orijinal teklif.
- Soru sorabilir ve tartışmalara katılabilirsiniz.
- Bir şeyin beklendiği gibi çalışmadığını düşünüyorsanız Chromium takipçisinde hata kaydı oluşturun.