javascript - Why is __caller__ unsafe? -
निम्नलिखित में __ कॉलर __
का उचित उपयोग लगता है:
< कोड> var foo = 1; फ़ंक्शन ए () {var foo = 2; फ़ंक्शन बी () {var foo = 3; foo; // 3 this.foo; // 1, वैश्विक __caller__.foo // 2} b () से; } ए(); // का निष्पादन संदर्भ बनाता है
हालांकि, __ कॉलर __
उपलब्ध नहीं है। क्यों नहीं? यदि वैश्विक संदर्भ / परिवर्तनीय ऑब्जेक्ट को यह
का उपयोग करके एक्सेस किया जा सकता है, तो क्यों नहीं a
's?
:
विशेष संपत्ति __कुलर__, जिसने कॉलर की सक्रियण ऑब्जेक्ट को इस प्रकार स्टैक के पुनर्निर्माण की अनुमति दे दी, उसे सुरक्षा कारणों से हटा दिया गया था।
और यह देखना आसान है कि यह ब्राउज़र में एक सुरक्षा दुर्घटना क्यों हो सकती है, जहां बहुत सी यूआई जावास्क्रिप्ट में कार्यान्वित है। एक ऐड-ऑन या अन्य क्रोम द्वारा आपके एक फ़ंक्शन को कॉल करने की कल्पना करें। आप कॉल स्टैक को देख सकते हैं और कॉल करने वाले (संभावित रूप से संवेदनशील) वैरिएबल पढ़ सकते हैं, या कॉलर फ़ंक्शंस में जावास्क्रिप्ट मूल्यों को भी इंजेक्ट कर सकते हैं, जो संभवत: उपयोगकर्ता की इच्छाओं के विरुद्ध कुछ करने के लिए उन्हें नीचे ले जा सकते हैं। प्रभावी रूप से हर वेब पेज को क्रोम सुरक्षा विशेषाधिकार मिलेगा और ब्राउज़र को पूरी तरह से समझौता किया जाएगा।
निश्चित रूप से आप इसे असली जावास्क्रिप्ट में कभी भी उपयोग नहीं कर सकते, क्योंकि यह गैर-मानक मोज़िला-केवल कार्यान्वयन विवरण था, उल्लेखनीय रूप से उल्लेख नहीं करने के लिए बदसूरत। इसमें आपके द्वारा जेएस की अपेक्षा की जाने वाली व्याख्यात्मक व्यवहार नहीं है।
Comments
Post a Comment