تاریخ انتشار: 2 آوریل 2025
وقتی روی یک لینک کلیک می کنید چه اتفاقی می افتد؟ بنفش می شود!
از روزهای اولیه اینترنت، سایتها برای اعمال سبکهای سفارشی بر روی لینکهایی که کاربران قبلاً روی آنها کلیک کردهاند، به انتخابگر CSS :visited
تکیه کردهاند. با استفاده از انتخابگر :visited
، سایت ها می توانند تجربه کاربری خود را بهبود بخشند و به کاربران خود در جهت یابی وب کمک کنند. با این حال، همانطور که قابلیت سفارشی سازی پیوندهای بازدید شده در طول زمان افزایش یافته است، تعداد حملات کشف شده توسط محققان امنیتی نیز افزایش یافته است.
این حملات می توانند لینک هایی را که کاربر بازدید کرده است نشان دهند و جزئیات مربوط به فعالیت وبگردی وی را فاش کنند. این مشکل امنیتی بیش از 20 سال است که وب را درگیر کرده است و مرورگرها برای کاهش این حملات تشخیص تاریخ، از توقف های مختلفی استفاده کرده اند. در حالی که حملات با این کاهش سرعت کاهش می یابند، از بین نمی روند.
از Chrome 136، کروم اولین مرورگر بزرگی است که این حملات را منسوخ می کند. این کار با پارتیشن بندی :visited
link history انجام می شود.
پارتیشن بندی لینک :visited
چیست؟
برای نمایش پیوندهایی که قبلاً بازدید کردهاید، مرورگر باید صفحاتی را که در طول زمان بازدید کردهاید پیگیری کند - به این تاریخچه :visited
شما میگویند. با استفاده از انتخابگر CSS :visited
میتوانید به پیوندهای بازدید شده متفاوت از پیوندهای بازدید نشده استایل دهید.
:visited {
color: purple;
background-color: yellow;
}
از لحاظ تاریخی، :visited
history unpartitioned بود. این بدان معناست که هیچ محدودیتی در مورد مکان نمایش تاریخ :visited
با استفاده از انتخابگر :visited
وجود ندارد. اگر روی یک پیوند کلیک کنید، در هر سایتی که آن پیوند را نمایش می دهد به صورت :visited نشان داده می شود. این نقص اصلی طراحی بود که حملات را قادر می ساخت اطلاعات مربوط به تاریخچه مرور کاربر را آشکار کنند.
مثال زیر را در نظر بگیرید. شما در حال مرور سایت A هستید و برای رفتن به سایت B روی پیوندی کلیک کنید. در این سناریو، سایت B به تاریخچه :visited
شما اضافه می شود. بعداً، ممکن است از Site Evil دیدن کنید، که پیوندی به سایت B نیز ایجاد می کند. بدون پارتیشن بندی، Site Evil پیوند به Site B را به صورت :visited
نمایش می دهد - حتی اگر روی پیوند در Site Evil کلیک نکرده باشید. سپس، Site Evil میتواند از یک سوء استفاده امنیتی استفاده کند تا بفهمد که آیا سبک پیوند به صورت :visited
است یا نه، بنابراین یاد میگیرد که در گذشته از سایت B بازدید کردهاید — اطلاعاتی در مورد سابقه مرور شما فاش میشود.
قبل از پارتیشن بندی، وقتی روی یک پیوند کلیک کردید:
در هر سایتی که آن پیوند را نمایش می دهد به صورت :visited نشان داده می شود!
پارتیشن بندی از تاریخچه مرور شما محافظت می کند تنها با نشان دادن یک پیوند به عنوان بازدید شده در صورتی که قبلاً روی آن پیوند از این سایت کلیک کرده باشید. اگر قبلاً با این سایت تعاملی نداشتهاید، پیوندهای آن بهصورت :visited
استایل داده نمیشوند.
مثال قبل را در نظر بگیرید، اما با پارتیشن بندی فعال است. شما در حال مرور سایت A هستید و برای رفتن به سایت B روی یک پیوند کلیک کنید، ترکیب "سایت A + سایت B" در تاریخچه بازدید شده شما ذخیره می شود. به این ترتیب، وقتی از Site Evil بازدید میکنید، پیوند آن به Site B بهعنوان :visited
نشان داده نمیشود زیرا با هر دو بخش ورودی "سایت A + سایت B" ما مطابقت ندارد (زمینهای که در ابتدا روی پیوند کلیک کردهاید). از آنجایی که هیچ سابقه مروری در Site Evil نمایش داده نمی شود، نمی تواند از هیچ سوء استفاده ای استفاده کند. بنابراین، تاریخچه مرورگر شما امن است!
پس از پارتیشن بندی، وقتی روی یک پیوند کلیک می کنید:
فقط به صورت :visited
در جایی که قبلا روی آن کلیک کرده اید نمایش داده می شود!
به طور خلاصه، پارتیشن بندی به ذخیره پیوندهای شما با اطلاعات اضافی درباره محل کلیک روی آنها اشاره دارد. در Chrome، این عبارت است: URL پیوند، سایت سطح بالا و مبدا فریم . با فعال بودن پارتیشن بندی، تاریخچه :visited
شما دیگر یک لیست جهانی نیست که هر سایتی بتواند آن را جستجو کند. درعوض، تاریخچه :visited
شما با زمینهای که در ابتدا از آن پیوند بازدید کردهاید، «پارتیشن بندی» یا جدا شده است.
در مورد پیوند به صفحات دیگر در همان سایت چطور؟
هنگامی که در حال مرور اینترنت هستید، ممکن است در نهایت بر روی بسیاری از پیوندها کلیک کنید که همگی به صفحات فرعی مختلف در همان سایت اشاره می کنند. برای مثال، هنگام تحقیق در مورد انواع فلزات، ممکن است از صفحات Site.Wiki
برای "کروم" و "برنج" دیدن کنید.
تحت اجرای سفت و سخت پارتیشن بندی، کاربران در صفحه Site.Wiki
برای طلا، پیوندهای صفحات کروم و برنج را به صورت :visited
نمایش داده نمی شوند. این به این دلیل است که کاربر روی هر یک از این صفحات از یک سایت سطح بالا کلیک کرده است که با صفحه Site.Wiki
برای طلا مطابقت ندارد.
برای بهبود تجربه کاربر در این سناریو و در عین حال حفظ حریم خصوصی و امنیتی پارتیشن بندی، ما یک برش برای خود پیوندها معرفی کردیم. به طور خلاصه، یک سایت می تواند صفحات فرعی خود را به صورت :visited
نمایش دهد، حتی اگر این پیوندها قبلاً در این زمینه کلیک نشده باشند. از آنجایی که سایت ها روش های دیگری برای ردیابی اینکه آیا کاربر از صفحات فرعی آن بازدید کرده است یا خیر، با معرفی خود لینک ها اطلاعات جدیدی به این سایت ها داده نمی شود. پارتیشن بندی همچنان در برابر ردیابی بین سایتی محافظت می کند و خط مشی همان مبدأ را اعمال می کند. اما توجه به این نکته مهم است که این فقط برای پیوندهایی به صفحات فرعی خود سایت اعمال می شود. پیوندها به سایت های شخص ثالث یا در iframe های شخص ثالث برای این استثنا واجد شرایط نیستند.
پس از حکاکی "self-link":
وضعیت پیاده سازی
این پیشرفتها برای امنیت و حریم خصوصی :visited
در نسخه 136 Chrome در دسترس هستند. Chrome اولین مرورگری است که این محافظتها را برای کاربران پیادهسازی میکند.
مشارکت کنید و بازخورد را به اشتراک بگذارید
- پیشنهاد اصلی ،
- سوالاتی را مطرح کنید و در بحث شرکت کنید.
- اگر فکر میکنید چیزی مطابق انتظار کار نمیکند ، یک اشکال را در ردیاب Chromium ثبت کنید .