لماذا لا يمكنني ضبط حجم خط الرابط الذي تمت زيارته؟

مرحبا يا هبر! أقدم إليكم ترجمة المقال "لماذا لا يمكنني ضبط حجم خط الرابط الذي تمت زيارته؟" جيم فيشر



يتم عرض الروابط التي تمت زيارتها باللون الأرجواني. لم تتم زيارته - باللون الأزرق. لقد حان هذا الاختلاف لنا منذ ظهور الويب. لكن CSS يسمح لنا بإعادة تكوين هذه الخصائص باستخدام محدد الزائفة: زار! لنفترض أنك تريد جعل الروابط التي تمت زيارتها باللون الرمادي وتقليص حجمها من أجل إظهار للمستخدم أن هذا الرابط قد زار بالفعل.

a:visited { color: gray; font-size: 6px; } 

يتم تطبيق هذا النمط على الصفحة الحالية:


تلوين الرابط باللون الرمادي ، كما هو متوقع ، يُعلمنا أنه تمت زيارته بالفعل ، لكن حجم الخط لا يزال كما هو! يحدث هذا لأن تغيير حجم الخط يمكن أن يكون سبب مشكلة عدم الحصانة! إذا كان بإمكان CSS تغيير حجم الخط ، فيمكنني (Jim) معرفة ما إذا كنت قد زرت pornhub.com. لكن كيف؟

تتوفر صفحات الويب لفحص العناصر المعروضة على الصفحة. الطريقة الأكثر وضوحًا هي استخدام window.getComputedStyle (). يتحدث عن الخصائص المطبقة على الرابط المذكور أعلاه ؛ كما ذكرت من قبل المتصفح: حجم الخط: 18px ؛ اللون: rgb (0 ، 0 ، 238).

إذا أبلغت getComputedStyle عن تغيير في حجم الخط من 18px إلى 6px للارتباطات التي تمت زيارتها ، فسأفهم (Jim) أن الصفحة قد أنشأت رابطًا لـ pornhub.com ، ثم سأتحقق من حجم الخط لتحديد محفوظات الاستعراض للمستعرض الخاص بك. يمكنني استخدام هذه البيانات للإعلانات المستهدفة ، يمكنني بيع بياناتك أو ابتزازك ، وما إلى ذلك ... تم إغلاق فجوة الأمان عن طريق حظر تغيير حجم الخط لـ: تمت زيارته.

ولكن المعلومات التي تم الحصول عليها باستخدام getComputedStyle حول لون الارتباط الذي تمت زيارته ستكون: rgb (0 ، 0 ، 238) - أي ، أزرق. هذه كذبة - الرابط رمادي! بالنسبة إلى خاصية اللون ، تغلق المستعرضات الثغرة الموجودة في الثغرة الأمنية بطريقة أخرى: بدلاً من حظر التغييرات ، فإنها تضطر getComputedStyle إلى الكذب حول القيمة الحقيقية.

لماذا يتم استخدام نهجين؟ لماذا لا يمكننا الحصول على getComputedStyle للكذب حول معلمة حجم الخط أيضًا؟ السبب هو أنه يمكنك فحص العناصر المعروضة لصفحة الويب والأساليب الأخرى إلى جانب getComputedStyle. يمكنك أيضًا التحقق من موضع عنصر في الصفحة باستخدام .pageXOffset أو .pageYOffset. سيؤثر تغيير حجم خط الارتباط الذي تمت زيارته على إزاحة العناصر الأخرى ، والتي بسببها يمكنك التحقق بشكل غير مباشر من الروابط التي تمت زيارتها. يعد تعطيل حجم الخط بالنسبة إلى: هو حل صعب ولكنه موثوق به.

يوفر هذا الرابط قائمة قصيرة من الخصائص المسموح بها ، مثل اللون ، والتي يجب ألا تؤثر على تخطيط الصفحة ولا يمكن اكتشافها. كل منهم أشكال مختلفة من تغيير اللون. يتم حظر جميع خصائص CSS الأخرى.

من الناحية النظرية ، لا توجد طريقة يمكن بها تحديد أن لون الرابط الذي تم زيارته قد تغير. الاحتمال الوحيد هو الهجوم المؤقت: على سبيل المثال ، إذا استغرق تغيير اللون إلى اللون الوردي وقتًا أطول من اللون الأزرق ، فيمكن للصفحة قياس المدة التي استغرقها عرض العنصر ومقارنته بالفترة المتوقعة.

PS:
شكر خاص للمساعدة في ضبط الترجمة إلى أولغا بيرفيرزيفا .

بفضل Oleg Yatsenko (Samber) ، لفت الانتباه في تعليقاته إلى أن الحل لمشكلة تسرب البيانات هذا تم تنفيذه لأول مرة في Mozilla - مؤلف الحل هو David Baron .

Source: https://habr.com/ru/post/ar445052/


All Articles