मैं वर्तमान उपयोगकर्ता को स्टोर करने और वस्तुओं का अनुरोध करने के लिए थ्रेड स्थानीय का उपयोग कर रहा हूं। इस तरह से मैं प्रोग्राम में कहीं से भी अनुरोध (जैसे गतिशील रूपों) के पास उन्हें पास करने के बिना आसानी से पहुंच प्राप्त कर सकता हूं।Django खराब में थ्रेड स्थानीय का उपयोग क्यों कर रहा है?
एक मिडलवेयर में धागा स्थानीय लोगों भंडारण को लागू करने के लिए, मैं Django साइट पर एक ट्यूटोरियल का पालन किया: लेख से http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version=20
: http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version=18
इस दस्तावेज़ के बाद से इस तकनीक से परहेज सुझाव देने के लिए संशोधित किया गया है :
एक डिजाइन बिंदु से, थ्रेडलोकल्स अनिवार्य रूप से वैश्विक चर हैं, और पोर्टेबिलिटी और predictabi की सभी सामान्य समस्याओं के अधीन हैं यह दर्शाता है कि वैश्विक चर आमतौर पर लागू होते हैं।
अधिक महत्वपूर्ण बात यह है कि सुरक्षा बिंदु से, थ्रेडलोकल्स एक बड़ा जोखिम पैदा करते हैं। एक डेटा स्टोर प्रदान करके जो अन्य धागे की स्थिति का खुलासा करता है, आप अपने वेब सर्वर में एक थ्रेड के लिए सिस्टम में किसी अन्य थ्रेड की स्थिति को संभावित रूप से संशोधित करने का एक तरीका प्रदान करते हैं। यदि थ्रेडलोकल डेटा में उपयोगकर्ताओं या अन्य प्रमाणीकरण से संबंधित डेटा के विवरण शामिल हैं, तो उस डेटा को किसी ऐसे हमले के आधार के रूप में उपयोग किया जा सकता है जो किसी अनधिकृत उपयोगकर्ता तक पहुंच प्रदान करता है, या किसी उपयोगकर्ता के निजी विवरण का खुलासा करता है। हालांकि इस तरह के हमले से सुरक्षित एक थ्रेडलोकल प्रणाली बनाना संभव है, रक्षात्मक होने के लिए यह बहुत आसान है और ऐसी प्रणाली का निर्माण करना जो पहले ऐसी किसी भी भेद्यता के अधीन नहीं है।
मुझे समझ में आता है कि वैश्विक चर खराब क्यों हो सकते हैं, लेकिन इस मामले में मैं अपने स्वयं के सर्वर पर अपना कोड चला रहा हूं, इसलिए मुझे नहीं पता कि दो वैश्विक चर किस खतरे में हैं।
क्या कोई शामिल सुरक्षा समस्या को समझा सकता है? मैंने कई लोगों से पूछा है कि अगर वे इस लेख को पढ़ते हैं और जानते हैं कि मैं थ्रेड स्थानीय लोगों का उपयोग कर रहा हूं, तो वे मेरे आवेदन को हैक कर सकते हैं, फिर भी कोई मुझे बताने में सक्षम नहीं है। मुझे संदेह करना शुरू हो रहा है कि यह बाल-विभाजन वाले शुद्धवादियों द्वारा आयोजित एक राय है जो वस्तुओं को स्पष्ट रूप से पारित करना पसंद करते हैं।
वैसे - आप मूल उदाहरण है? अब यह नष्ट कर दिया है और मुझे लगता है कि उपयोग करना चाहते हैं ... – rslite
यह टुकड़ा सुंदर हटाए गए पृष्ठ के समान है: http://djangosnippets.org/snippets/2179/ – hekevintran
GlobalRequest मिडलवेयर: https://djangosnippets.org/snippets/2853 –