हिन्दी

वीडियो और उपशीर्षक · डायरेक्ट मीडिया डाउनलोडर

वेब ब्राउज़र में समान-मूल नीति और CORS का संक्षिप्त इतिहास

· पेजभूमि

कोर वेब-इतिहास सुरक्षा

प्रारंभिक ब्राउज़र की उत्पत्ति नियंत्रित क्रॉस-ओरिजिन HTTP एक्सेस में विकसित हो रही है
मूल ToolAcre वेक्टर चित्रण

वह नियम जो किसी ब्राउज़र टूल को किसी अन्य साइट की फ़ाइलों को स्वतंत्र रूप से पढ़ने से रोकता है, वह सबसे पुराने स्क्रिप्टिंग ब्राउज़र का है। यह पोस्ट समान-मूल नीति, XMLHttpRequest और CORS मानक का पता लगाती है जिसने अंततः नियंत्रित क्रॉस-साइट फ़ेचिंग को संभव बनाया।

क्यों कोई ब्राउज़र आपके स्वयं के टैब को अभी-अभी प्राप्त बाइट्स सौंपने से इंकार कर देता है - दशकों पुराने नियम का रोजमर्रा का प्रभाव

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

डायरेक्ट मीडिया डाउनलोडर को नियम का सामना करना पड़ता है क्योंकि उसे टुकड़ों को ब्लॉब में पढ़ना होगा। नेटिव सेव लिंक वहां काम कर सकता है जहां फ़ेच विफल हो जाता है क्योंकि यह एक अलग ब्राउज़र पथ का अनुसरण करता है। इनकार ब्राउज़र में कहीं और कुकीज़ और इंट्रानेट संसाधनों की सुरक्षा करता है, भले ही यह विशेष डाउनलोडर जानबूझकर अपने स्वयं के कॉल से क्रेडेंशियल छोड़ देता है। सीमा एक ही ब्राउज़र में असंबंधित कुकीज़ और इंट्रानेट पेजों की सुरक्षा करती है, भले ही यह विशेष अनुरोध क्रेडेंशियल छोड़ देता है।

नेटस्केप, JavaScript और पहला मूल नियम - सुरक्षा समस्या जिसने समान-मूल नीति को प्रेरित किया

प्रारंभिक वेब स्क्रिप्टिंग ने एक साइट को विज़िटर की परिवेश पहुंच के माध्यम से किसी अन्य साइट के संवेदनशील पेजों को पढ़ने से रोकना आवश्यक बना दिया। ब्राउज़रों ने उस सीमा को मूल के चारों ओर व्यवस्थित किया।

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

XMLHttpRequest और बंद वेब - कैसे स्क्रिप्टेड अनुरोधों को नियम विरासत में मिला और मैशअप को संघर्ष क्यों करना पड़ा

XMLHttpRequest ने पेजभूमि HTTP को सक्षम किया लेकिन मूल प्रतिबंध बरकरार रखा। इसने समान-साइट अनुप्रयोगों को उपयोगी बना दिया जबकि क्रॉस-साइट मैशअप के लिए सहयोग या सर्वर मध्यस्थों की आवश्यकता होती है।

एक सार्वभौमिक क्लाइंट ओवरराइड ने सुरक्षा को नष्ट कर दिया होगा। लक्ष्य के मालिक सर्वर को यह व्यक्त करने का एक तरीका चाहिए था कि कौन से बाहरी मूल चयनित प्रतिक्रियाओं को पढ़ सकते हैं। सर्वर रिले आम समाधान बन गए, लेकिन उन्होंने विश्वास, बैंडविड्थ और अनुरोध-जालसाजी जोखिम को ब्राउज़र सैंडबॉक्स के बाहर बुनियादी ढांचे में स्थानांतरित कर दिया। रिले वर्कअराउंड ने पॉलिसी को खत्म करने के बजाय बैंडविड्थ, ट्रस्ट और सर्वर-साइड अनुरोध-जालसाजी जोखिम को क्लाइंट सैंडबॉक्स से परे स्थानांतरित कर दिया। जब उन मध्यस्थों को जानबूझकर तैनात किया जाता है तो उन्हें अपनी सुरक्षा, गोपनीयता और दुरुपयोग नियंत्रण की आवश्यकता होती है।

CORS मानक - एक्सेस-कंट्रोल हेडर कैसे सर्वर को डिफ़ॉल्ट को ढीला किए बिना क्रॉस-ऑरिजिन रीडिंग में चुनने देते हैं

CORS ब्राउज़र द्वारा व्याख्या किए गए HTTP प्रतिक्रिया हेडर के माध्यम से उस सहयोग की आपूर्ति करता है। `Access-Control-Allow-Origin` एक अनुरोधित मूल या, उपयुक्त क्रेडेंशियल-मुक्त मामलों में, एक व्यापक दर्शक वर्ग को अधिकृत कर सकता है।

तंत्र विश्व स्तर पर समान-मूल नीति को अक्षम नहीं करता है। यह उन प्रतिक्रियाओं तक स्कोप्ड रीड एक्सेस प्रदान करता है जिनका होस्ट प्रोटोकॉल के तहत उन्हें उजागर करना चुनता है। प्रीफ़्लाइट परिणामों को प्रोटोकॉल नियमों के तहत ब्राउज़र द्वारा कैश किया जा सकता है, इसलिए ऑडिट को एक वार्म ट्रेस से "कभी कोई पॉलिसी जांच नहीं हुई" का अनुमान नहीं लगाना चाहिए। यह डिफ़ॉल्ट अलगाव को सुरक्षित रखता है जबकि संसाधन मालिकों को चयनित कॉलर्स और विधियों के लिए एक जानबूझकर अपवाद प्रकाशित करने की अनुमति देता है।

प्रीफ़्लाइट, सरल अनुरोध और अपारदर्शी प्रतिक्रियाएँ - वह शब्दावली जो अधिकांश डाउनलोड विफलताओं की व्याख्या करती है

कुछ क्रॉस-ओरिजिन अनुरोध इतने सरल होते हैं कि उड़ान से पहले की आवश्यकता नहीं होती; अन्य लोग पहले यह पूछने के लिए OPTIONS भेजते हैं कि क्या विधि और हेडर की अनुमति है। प्रीफ़्लाइट बातचीत है, वास्तविक मीडिया स्थानांतरण नहीं।

नो-कोर्स मोड से अपारदर्शी प्रतिक्रियाएँ उत्पन्न होती हैं और स्क्रिप्ट से स्थिति, हेडर और बॉडी छिप जाती हैं। ToolAcre उस मोड का चयन नहीं करता है क्योंकि एक अपठनीय बॉडी अपेक्षित सहेजने योग्य ब्लॉब नहीं बन सकती है। एक CORS त्रुटि एक सफल सर्वर-साइड अनुरोध के साथ सह-अस्तित्व में हो सकती है, जो इस बात को पुष्ट करती है कि एप्लिकेशन विफलता का मतलब यह नहीं है कि मूल को कुछ भी नहीं मिला है। कैश्ड प्रीफ़्लाइट निर्णय एक गर्म ट्रेस में दिखाई देने वाली चीज़ को बदल सकते हैं, इसलिए OPTIONS की ऐतिहासिक अनुपस्थिति इस बात का प्रमाण नहीं है कि बातचीत कभी अस्तित्व में नहीं थी।

केवल-ब्राउज़र डाउनलोडर के लिए CORS का क्या अर्थ है - होस्ट निर्णय लेता है, टूल ओवरराइड नहीं कर सकता है, और इसके बारे में ईमानदारी ही सही प्रतिक्रिया है

इस डाउनलोडर के लिए, होस्ट तय करता है कि HEAD और GET प्रतिक्रियाएँ पढ़ने योग्य हैं या नहीं। ToolAcre होस्ट की ओर से अनुमति-उत्पत्ति प्रतिक्रिया शीर्षलेख संलग्न नहीं कर सकता है, और यह शरीर को अपने मूल के माध्यम से रिले नहीं करेगा।

त्रुटि CORS और नेटवर्क संभावनाओं को जोड़ती है क्योंकि Fetch कुछ विफलताओं में जानबूझकर बारीक जानकारी को रोक देता है। DevTools विज़िटर को एप्लिकेशन कोड प्राप्त होने से कहीं अधिक बता सकता है। होस्ट ऑपरेटरों को केवल इच्छित उत्पत्ति, विधियों और हेडर को अधिकृत करना चाहिए और फिर स्थानीय कॉन्फ़िगरेशन इरादे पर भरोसा करने के बजाय उनकी सटीक उत्पादन प्रतिक्रियाओं को सत्यापित करना चाहिए। एक अवरुद्ध रीड अनुरोध प्राप्त करने वाले सर्वर के साथ सह-अस्तित्व में हो सकता है, यही कारण है कि इंटरफ़ेस कभी भी बिना किसी संपर्क के एप्लिकेशन विफलता के बराबर नहीं होता है।

टेकअवे: एक नियम जो आपको तब भी बचाता है जब यह आपको परेशान करता है - डायरेक्ट मीडिया डाउनलोडर इसके आसपास के बजाय इसके भीतर कैसे काम करता है

नियम उपयोगकर्ताओं की तब भी सुरक्षा करता है जब यह वैध फ़ाइल स्थानांतरण को विफल करता है। एक होस्ट जो चाहता है कि ब्राउज़र एप्लिकेशन सार्वजनिक मीडिया को पढ़े, वह उचित CORS प्रतिक्रियाओं को कॉन्फ़िगर कर सकता है; जो इस स्क्रिप्ट पथ के माध्यम से अप्राप्य नहीं रहता है।

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