मैं एक रेल परियोजना के लिए एक प्लगइन आर्किटेक्चर लागू कर रहा हूं। प्लगइन आर्किटेक्चर में प्लगइन लेखकों को सर्वर पर निष्पादित करने के लिए रूबी कोड लिखने की क्षमता शामिल है। मैं इसे सुरक्षित बनाना चाहता हूं ताकि प्लगइन लेखकों के पास विनाशकारी कोड लिखने की क्षमता न हो।सीमित वातावरण के भीतर रूबी कोड निष्पादित करें
मुझे लगता है कि मुझे क्या करना है, हालांकि मैं अन्य विकल्पों के लिए खुला हूं, एक अलग वातावरण में प्लगइन के लिए रूबी कोड निष्पादित करता है जिसमें सीमित क्षेत्र है। मैं therubyracer मणि की भावना में कुछ सोच रहा हूं लेकिन मैं जावास्क्रिप्ट के बजाय रूबी को सुरक्षित रूप से निष्पादित करना चाहता हूं।
मैं ऐसा करने का एक अच्छा तरीका नहीं समझ सकता। मैंने eval
का उपयोग सीमित bindings
ऑब्जेक्ट के साथ करने के बारे में सोचा था, लेकिन मुझे लगता है कि eval
कई फाइलें मुश्किल हो सकती हैं और मुझे नहीं लगता कि मैं बाइंडिंग को पर्याप्त रूप से सीमित कर सकता हूं। उदाहरण के लिए, मैं नहीं चाहता कि प्लगइन किसी मॉडल पर destroy_all
, या ऐप में बंदर-पैच मौजूदा कोड जैसे कुछ करने में सक्षम हो।
मैं इस के साथ काफी स्टंप हूं। क्या किसी के भी पास कोई सुझाव है?
आप इस सवाल के साथ कुछ भाग्य हो सकता है: http://stackoverflow.com/questions/406833/language-in-a-sandbox- इन-रेल – Earlz