:visited को ज़्यादा निजी बनाना

Kyra Seevers
Kyra Seevers

पब्लिश करने की तारीख: 2 अप्रैल, 2025

लिंक पर क्लिक करने पर क्या होता है? यह पर्पल हो जाता है!

इंटरनेट के शुरुआती दिनों से ही, साइटें उन लिंक पर पसंद के मुताबिक स्टाइल लागू करने के लिए, सीएसएस :visited सिलेक्टर पर निर्भर करती हैं जिन पर उपयोगकर्ताओं ने पहले क्लिक किया है. :visited चुनने वाले टूल का इस्तेमाल करके, साइटें अपने उपयोगकर्ता अनुभव को बेहतर बना सकती हैं और अपने उपयोगकर्ताओं को वेब पर नेविगेट करने में मदद कर सकती हैं. हालांकि, समय के साथ, विज़िट किए गए लिंक को पसंद के मुताबिक बनाने की सुविधा बढ़ी है. साथ ही, सुरक्षा विशेषज्ञों को हमलों की संख्या में भी बढ़ोतरी दिखी है.

इन हमलों से यह पता चल सकता है कि उपयोगकर्ता ने किन लिंक पर विज़िट किया है. साथ ही, इनसे उसकी वेब ब्राउज़िंग गतिविधि की जानकारी भी लीक हो सकती है. सुरक्षा से जुड़ी यह समस्या, वेब पर 20 से ज़्यादा सालों से है. ब्राउज़र ने इतिहास का पता लगाने वाले इन हमलों को कम करने के लिए, कई तरह के उपाय अपनाए हैं. इन तरीकों से हमलों की रफ़्तार कम हो जाती है, लेकिन हमले पूरी तरह से खत्म नहीं होते.

Chrome 136 से, Chrome पहला ऐसा मुख्य ब्राउज़र है जो इन हमलों को अमान्य कर देता है. ऐसा करने के लिए, :visited लिंक के इतिहास को अलग-अलग हिस्सों में बांटा जाता है.

आपने पहले किन लिंक पर विज़िट किया है, यह दिखाने के लिए ब्राउज़र को समय के साथ विज़िट किए गए पेजों का ट्रैक रखना होगा. इसे :visited इतिहास कहा जाता है. सीएसएस :visited सिलेक्टर का इस्तेमाल करके, देखे गए लिंक को उन लिंक से अलग स्टाइल में दिखाया जा सकता है जिन्हें नहीं देखा गया है:

:visited {
  color: purple;
  background-color: yellow;
  }

पहले, :visited के इतिहास को अलग-अलग हिस्सों में नहीं बांटा जाता था. इसका मतलब है कि :visited सिलेक्टर का इस्तेमाल करके, :visited इतिहास को कहीं भी दिखाया जा सकता था. अगर आपने किसी लिंक पर क्लिक किया है, तो वह लिंक दिखाने वाली हर साइट पर :visited के तौर पर दिखेगा. डिज़ाइन में यह मुख्य गड़बड़ी थी, जिसकी वजह से उपयोगकर्ता के ब्राउज़िंग इतिहास की जानकारी को ऐक्सेस करने के लिए, हमले किए जा सकते थे.

नीचे दिया गया उदाहरण देखें. आप साइट A पर ब्राउज़ कर रहे हैं और साइट B पर जाने के लिए, किसी लिंक पर क्लिक करते हैं. इस स्थिति में, साइट B को आपके :visited इतिहास में जोड़ दिया जाएगा. इसके बाद, हो सकता है कि आप साइट Evil पर जाएं, जो साइट B पर भी लिंक करती है. पार्टिशनिंग के बिना, साइट Evil, साइट B के उस लिंक को :visited के तौर पर दिखाएगी. भले ही, आपने साइट Evil पर लिंक पर क्लिक न किया हो. इसके बाद, साइट Evil, सुरक्षा से जुड़े किसी एक्सप्लॉइट का इस्तेमाल करके यह पता लगा सकती है कि लिंक को :visited के तौर पर स्टाइल किया गया है या नहीं. इससे यह पता चलता है कि आपने पहले साइट B पर विज़िट किया है. साथ ही, आपके ब्राउज़िंग इतिहास की जानकारी लीक हो जाती है.

पार्टीशन करने से पहले, लिंक पर क्लिक करने पर:

उपयोगकर्ता को site-a.com पेज पर दिखाता है, जो site-b.com का लिंक दिखाता है.

यह उस लिंक को दिखाने वाली हर साइट पर :visited के तौर पर दिखेगा!

site-evil.com के साथ-साथ site-a.com को भी दिखाता है. दोनों पेजों पर site-b.com का एक ही लिंक दिखता है और उसे 'विज़िट किया गया' के तौर पर स्टाइल किया गया है.

पार्टिशन करने की सुविधा, आपके ब्राउज़िंग इतिहास को सुरक्षित रखती है. यह किसी लिंक को 'विज़िट किया गया' के तौर पर सिर्फ़ तब दिखाती है, जब आपने इस साइट से उस लिंक पर पहले क्लिक किया हो. अगर आपने पहले कभी इस साइट से इंटरैक्ट नहीं किया है, तो इस साइट के लिंक को :visited के तौर पर स्टाइल नहीं किया जाएगा.

पिछले उदाहरण पर ध्यान दें, लेकिन इसमें पार्टीशन करने की सुविधा चालू है. मान लें कि आप साइट A पर ब्राउज़ कर रहे हैं और साइट B पर जाने के लिए किसी लिंक पर क्लिक करते हैं. ऐसे में, "साइट A + साइट B" का कॉम्बिनेशन, आपके 'विज़िट किए गए इतिहास' में सेव हो जाता है. इस तरह, जब आप साइट Evil पर जाते हैं, तो साइट B पर ले जाने वाला उसका लिंक :visited के तौर पर नहीं दिखेगा. ऐसा इसलिए, क्योंकि यह हमारी "साइट A + साइट B" एंट्री के दोनों हिस्सों से मेल नहीं खाता. यह वह कॉन्टेक्स्ट है जहां आपने मूल रूप से लिंक पर क्लिक किया था. Site Evil पर ब्राउज़िंग इतिहास नहीं दिखता है. इसलिए, वह किसी भी एक्सप्लॉइट का फ़ायदा नहीं ले सकती. इसलिए, आपका ब्राउज़िंग इतिहास सुरक्षित है!

पार्टीशन करने के बाद, किसी लिंक पर क्लिक करने पर:

उपयोगकर्ता को site-a.com पेज पर दिखाता है, जो site-b.com का लिंक दिखाता है.

यह सिर्फ़ उन जगहों पर :visited के तौर पर दिखता है जहां आपने पहले उस पर क्लिक किया है!

site-evil.com के साथ-साथ site-a.com को भी दिखाता है. दोनों पेजों पर site-b.com का एक ही लिंक दिखता है. हालांकि, site-a.com पर मौजूद लिंक को 'विज़िट किया गया' के तौर पर स्टाइल किया गया है.

कम शब्दों में, पार्टिशनिंग का मतलब है कि आपके लिंक को, उन पर क्लिक किए जाने की जगह के बारे में ज़्यादा जानकारी के साथ सेव करना. Chrome में, ये हैं: लिंक का यूआरएल, टॉप-लेवल साइट, और फ़्रेम का ऑरिजिन. डिवाइस के हिसाब से डेटा को अलग-अलग हिस्सों में बांटने की सुविधा चालू होने पर, आपका :visited इतिहास अब एक ग्लोबल सूची नहीं है. कोई भी साइट इस पर क्वेरी नहीं कर सकती. इसके बजाय, आपके :visited इतिहास को "अलग-अलग हिस्सों में बांटा" जाता है या उस कॉन्टेक्स्ट के हिसाब से अलग किया जाता है जहां से आपने उस लिंक पर पहली बार विज़िट किया था.

लिंक के यूआरएल, टॉप-लेवल साइट, और फ़्रेम के ऑरिजिन के ज़रिए जानकारी के फ़्लो को दिखाता है.

इंटरनेट ब्राउज़ करते समय, हो सकता है कि आप कई ऐसे लिंक पर क्लिक कर दें जो एक ही साइट के अलग-अलग सबपेजों पर ले जाते हों. उदाहरण के लिए, अलग-अलग तरह की धातुओं के बारे में रिसर्च करते समय, "क्रोम" और "पीतल" के लिए Site.Wiki पेजों पर जाया जा सकता है.

पार्टिशनिंग को सख्ती से लागू करने पर, उपयोगकर्ताओं को Site.Wiki पेज पर, गोल्ड के लिए :visited के तौर पर दिखाए गए क्रोम और पीतल के पेजों के लिंक नहीं दिखेंगे. इसकी वजह यह है कि उपयोगकर्ता ने इनमें से हर पेज पर, किसी ऐसी टॉप-लेवल साइट से क्लिक किया है जो गोल्ड के लिए Site.Wiki पेज से मेल नहीं खाती.

भले ही, उपयोगकर्ता ने metals.com से site.wiki पर लिंक के एक सेट पर विज़िट किया हो, लेकिन उन्हें विज़िट किए गए के तौर पर स्टाइल नहीं किया गया है, क्योंकि क्लिक metals.com से आया था.

इस स्थिति में, उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ, डेटा को अलग-अलग हिस्सों में बांटने की सुविधा से जुड़ी निजता और सुरक्षा से जुड़ी सुरक्षा भी दी जा सकती है. इसके लिए, हमने सेल्फ़-लिंक के लिए एक सुविधा शुरू की है. खास तौर पर, कोई साइट अपने सबपेजों को :visited के तौर पर दिखा सकती है. भले ही, इन लिंक पर पहले कभी क्लिक न किया गया हो. साइटों के पास, उपयोगकर्ता ने उनके सबपेजों पर विज़िट किया है या नहीं, यह ट्रैक करने के अन्य तरीके होते हैं. इसलिए, साइटों को सेल्फ़-लिंक की सुविधा के ज़रिए कोई नई जानकारी नहीं दी जाती. पार्टिशन करने से, क्रॉस-साइट ट्रैकिंग से अब भी सुरक्षा मिलती है. साथ ही, एक ही सोर्स की नीति लागू होती है. हालांकि, यह ध्यान रखना ज़रूरी है कि यह सिर्फ़ साइट के सबपेजों पर ले जाने वाले लिंक पर लागू होता है. तीसरे पक्ष की साइटों या तीसरे पक्ष के iframe में मौजूद लिंक पर यह अपवाद लागू नहीं होता.

"सर्वोत्तम नतीजों में अपने-आप लिंक होने वाले कॉन्टेंट" को हटाने के बाद:

अगर सेल्फ़ लिंक किसी साइट के सबपेज हैं, तो अब उन्हें 'विज़िट किया गया' के तौर पर मार्क किया जाता है.

लागू करने की स्थिति

:visited की सुरक्षा और निजता को बेहतर बनाने के लिए किए गए ये सुधार, Chrome के वर्शन 136 से उपलब्ध हैं. Chrome, उपयोगकर्ताओं के लिए इन सुरक्षा उपायों को लागू करने वाला पहला ब्राउज़र है.

दर्शकों से जुड़ना और सुझाव/राय देना या शिकायत करना