Chrome Cache to XSS
इस तकनीक का विवरण यहाँ चर्चा करता है जो दो प्रमुख कैश प्रकारों: बैक/फॉरवर्ड कैश (bfcache) और डिस्क कैश के व्यवहार और अंतरक्रिया को समझने में सम्मिलित है। bfcache, जो पूरे पृष्ठ का एक संपूर्ण स्नैपशॉट संग्रहित करता है जिसमें JavaScript हीप शामिल है, बैक/फॉरवर्ड नेविगेशन के लिए डिस्क कैश की तुलना में प्राथमिकता दी जाती है क्योंकि इसकी योग्यता अधिक समग्र स्नैपशॉट संग्रहित करने में है। उल्ट, डिस्क कैश, जो वेब से प्राप्त संसाधनों को संग्रहित करता है जिसमें JavaScript हीप शामिल नहीं है, और संचार लागत को कम करने के लिए बैक/फॉरवर्ड नेविगेशन के लिए उपयोग किया जाता है। डिस्क कैश का एक दिलचस्प पहलू यह है कि इसमें fetch
का उपयोग करके प्राप्त किए गए संसाधनों को शामिल किया जाता है, जिसका मतलब है कि ब्राउज़र द्वारा कैश से URL संसाधनों को रेंडर किया जाएगा।
मुख्य बिंदु:
bfcache बैक/फॉरवर्ड नेविगेशन में डिस्क कैश की तुलना में प्राधिकरण रखता है।
bfcache को अक्षम करने के लिए:
डिफ़ॉल्ट रूप से, Puppeteer bfcache को अक्षम करता है, जो क्रोमियम की दस्तावेज़ीकरण में दी गई शर्तों के साथ मेल खाता है। bfcache को अक्षम करने का एक प्रभावी तरीका RelatedActiveContentsExist
का उपयोग करके किया जा सकता है, जिसे window.opener
के संदर्भ को बनाए रखने वाले window.open()
के साथ पृष्ठ खोलकर प्राप्त किया जा सकता है।
व्यवहार का पुनरावृत्ति:
किसी वेबपेज पर जाएं, जैसे,
https://example.com
।open("http://spanote.seccon.games:3000/api/token")
को क्रियान्वित करें, जिससे एक सर्वर प्रतिक्रिया 500 स्थिति कोड के साथ प्राप्त होती है।नए खुले टैब में,
http://spanote.seccon.games:3000/
पर नेविगेट करें। यह कार्रवाईhttp://spanote.seccon.games:3000/api/token
की प्रतिक्रिया को डिस्क कैश के रूप में कैश करती है।history.back()
का उपयोग करके पिछले पेज पर नेविगेट करें। यह कार्रवाई पृष्ठ पर कैश किए गए JSON प्रतिक्रिया का रेंडरिंग करती है।
डिस्क कैश का उपयोग किया गया था यह साबित करने के लिए जांच की जा सकती है गूगल क्रोम में डेवटूल्स का उपयोग करके।
bfcache और डिस्क कैश पर अधिक विवरण के लिए, संदर्भ web.dev पर bfcache और Chromium के डिज़ाइन दस्तावेज़ों पर डिस्क कैश में मिल सकते हैं।
Last updated