2009-09-20 14 views
13

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

हालांकि, मैंने पढ़ा है कि उपयोगकर्ता को पाइथन कोड का आह्वान करने की अनुमति देने पर सुरक्षा जोखिम होते हैं जो उपयोगकर्ता की तुलना में उच्च पहुंच स्तर के साथ चलता है, जैसे कि SUID पायथन स्क्रिप्ट्स। क्या ये चिंताएं पाइथन पीएएम मॉड्यूल पर भी लागू होती हैं?

उत्तर

17

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

ऐसा लगता है कि pam_python ऐसे जोखिमों के खिलाफ अच्छी तरह से बख्तरबंद है, और इसलिए यह आपके उद्देश्यों के लिए सुरक्षित रूप से उपयोग योग्य होना चाहिए। हालांकि, ध्यान दें कि the docs बिंदु बाहर करना ...:,

अजगर से लेखन पीएएम मॉड्यूल चुकानी एक बड़े प्रदर्शन की सजा और अजगर की आवश्यकता है स्थापित होने के लिए तो यह मॉड्यूल लिखने के लिए सबसे अच्छा विकल्प नहीं है कि व्यापक रूप से इस्तेमाल किया जाएगा।

तो, यदि आप सही हैं कि आप जिस तंत्र की आपूर्ति कर रहे हैं वह लोकप्रिय होगा, तो आप इन मुद्दों से बचने के लिए शायद अपने मॉड्यूल को सी में कोड करना चाहेंगे। हालांकि, इसे सीमित वितरण के साथ अवधारणा के सबूत के रूप में पाइथन में प्रोटोटाइप करना, सी में इसे मजबूत करने से पहले, एक व्यवहार्य रणनीति है।

संबंधित मुद्दे