PL / Python को अविश्वास क्यों दिया जाता है?


11

डॉक्स के अनुसार:

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

पाइथन के लिए एक सुरक्षित निष्पादन तंत्र विकसित करना वास्तव में मुश्किल क्यों है लेकिन पर्ल जैसी अन्य भाषाओं के लिए नहीं?

जवाबों:


13

यह पायथन के ऑब्जेक्ट मॉडल के साथ करना है - हमेशा उन वस्तुओं का संदर्भ प्राप्त करने का एक तरीका है जो असुरक्षित हो सकते हैं। समस्याओं पर कुछ जानकारी के लिए rexec मॉड्यूल प्रलेखन और डॉक्स के प्रतिबंधित निष्पादन अध्याय को देखें:

सीमाएं पोस्टग्रेसीएल के स्वयं के साथ करने के लिए कुछ भी नहीं हैं, वे सीपीथॉन दुभाषिया कार्यान्वयन या संभवतः यहां तक ​​कि पायथन भाषा अपने स्वयं के लिए अंतर्निहित हैं।

कुछ अन्य भाषाओं ने रनटाइम्स की जाँच की, जैसे पर्ल, जावा, जावास्क्रिप्ट और लुआ। उनमें से अधिकांश ने सुरक्षा मुद्दों की एक श्रृंखला का सामना किया है क्योंकि ऐसे सीमित निष्पादन वातावरण सभी संभावित जेलब्रेक कारनामों से बचाने के लिए बहुत कठिन हैं।

वहाँ वास्तव में कुछ भी नहीं है PostgreSQL एक semitrusted पायथन दुभाषिया को जोड़ने से रोक रहा है, क्योंकि रेक्सेक कई उद्देश्यों के लिए "काफी अच्छा" है। PostgreSQL केवल-ज्यादातर-थोड़े-अच्छे-पर्याप्त-शायद के लिए उत्सुक नहीं है, हालांकि। यह केवल तभी स्वीकार किया जाएगा जब सुपरसुअर-केवल चिह्नित किया गया हो, लेकिन आप हमेशा विशिष्ट उपयोगकर्ताओं के लिए इस तक पहुंच प्रदान कर सकते हैं। यह अविश्वसनीय अजगर से बेहतर होगा।

व्यक्तिगत रूप से मुझे लगता है कि पीएल / वी 8 या इसी तरह का भविष्य यहां है, और इसे कोर में समर्थित होने की ओर बढ़ते देखना चाहते हैं।

मैंने भी एक विश्वसनीय मोनो के विचार की खोज की है जो C #, VB.NET, IronPython में लिखी गई "सुरक्षित" असेंबली को लोड कर सकता है, या जो कुछ भी लेकिन उस विषय पर बहुत कुछ करने में सक्षम नहीं है।


मैंने इसे कभी भी एक कारण के रूप में नहीं देखा है कि इसे अविश्वासित क्यों माना जाता है। डिफ़ॉल्ट रूप से, जावा, वी 8, टीसीएल, आर, और अन्य को अविश्वसनीय माना जाता है। केवल कारण पर्ल पर भरोसा किया जाता है, क्योंकि वे पोस्टग्रेएसक्यूएल पोस्टग्रैसेक्लो.ओआर
डॉक्स/

1
@ TheSteve0 आपने ऐसा नहीं देखा होगा, लेकिन ऐसा है। PostgreSQL में प्लिफ्थोनू हुआ करता था, और इसे पायथॉन rexecमॉड्यूल के पदावनति के बाद हटा दिया गया था जैसा कि स्वाभाविक रूप से असुरक्षित है, जैसा कि ऊपर लिंक किया गया है। मुझे लगता है कि शायद PyPi का उपयोग करने वाला एक प्लिफ़थॉन एक प्रतिबंधित मोड देने में सक्षम हो सकता है जिसे Pg तब उपयोग कर सकता है। मैंने यह देखने के लिए नहीं देखा कि क्या बहुत काम है। आप "पर्ल के विशेष विश्वसनीय संस्करण" के बारे में भी गलत हैं - यह वास्तव में पूरी तरह से सामान्य पर्ल है, उसी दुभाषिया का उपयोग प्लपर और प्लेपरलू के लिए किया जाता है। अंतर रनटाइम कॉन्फ़िगरेशन है।
क्रेग रिंगर

@ TheSteve0 plperl रनटाइम के दौरान पर्ल दुभाषिया उदाहरणों को अलग-अलग तरीके से कॉन्फ़िगर करता है। देखें plperl.c गोरे जानकारी के लिए, विशेष रूप से pp_require_safeऔर plperl_trusted_init। मैं इतना नहीं जानता कि प्रतिबंधित पर्ल निष्पादन की सही सुरक्षा के लिए एक राय के रूप में बहुत कुछ है। मैं लुआ का एक विश्वसनीय संस्करण देखना या बेहतर माइंडशेयर और गोद लेना पसंद करूंगा, एक विश्वसनीय जावास्क्रिप्ट दुभाषिया। लेकिन जो हमारे पास है वह अभी के लिए बेहतर है।
क्रेग रिंगर

@ TheSteve0 BTW, जावा या Groovy कोड का उपयोग करने वाला जावा JVM, या C # या VB.NET का उपयोग करने वाले मोनो VM को बहुत अधिक समझ में आएगा क्योंकि दोनों रनटाइम में मजबूत सैंडबॉक्स और सुरक्षा प्रबंधन सुविधाएँ हैं। उदाहरण के लिए Java का SecurityManager। लेकिन दुर्भाग्य से दोनों रनटाइम के लिए हैवीवेट-स्टार्टअप, थ्रेडेड, साझा-सब-बाय-डिफॉल्ट निष्पादन मॉडल का उपयोग किया जाता है जो पोस्टग्रैसक्यूएल की लाइटवेट प्रक्रिया साझा-बाय-बाय-डिफॉल्ट फोर्क () - बिना-निष्पादन मॉडल के लिए खराब फिट हैं। वे वास्तव में कांटा () सक्षम नहीं हैं। इसलिए हम उन्हें PostgreSQL में बहुत प्रभावी ढंग से उपयोग नहीं कर सकते हैं।
क्रेग रिंगर

यहाँ पाठकों को इस GitHub मुद्दे में दिलचस्पी हो सकती है जो मैंने मोनो परियोजना पर कांटे में मोनो का उपयोग करके किया है () रनटाइम्स: github.com/mono/mono/issues/11857
क्रेग रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.