2012-08-27 10 views
5

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

मुझे लगता है कि मुझे क्या करना है, हालांकि मैं अन्य विकल्पों के लिए खुला हूं, एक अलग वातावरण में प्लगइन के लिए रूबी कोड निष्पादित करता है जिसमें सीमित क्षेत्र है। मैं therubyracer मणि की भावना में कुछ सोच रहा हूं लेकिन मैं जावास्क्रिप्ट के बजाय रूबी को सुरक्षित रूप से निष्पादित करना चाहता हूं।

मैं ऐसा करने का एक अच्छा तरीका नहीं समझ सकता। मैंने eval का उपयोग सीमित bindings ऑब्जेक्ट के साथ करने के बारे में सोचा था, लेकिन मुझे लगता है कि eval कई फाइलें मुश्किल हो सकती हैं और मुझे नहीं लगता कि मैं बाइंडिंग को पर्याप्त रूप से सीमित कर सकता हूं। उदाहरण के लिए, मैं नहीं चाहता कि प्लगइन किसी मॉडल पर destroy_all, या ऐप में बंदर-पैच मौजूदा कोड जैसे कुछ करने में सक्षम हो।

मैं इस के साथ काफी स्टंप हूं। क्या किसी के भी पास कोई सुझाव है?

+0

आप इस सवाल के साथ कुछ भाग्य हो सकता है: http://stackoverflow.com/questions/406833/language-in-a-sandbox- इन-रेल – Earlz

उत्तर

1

मैं आपको रूबी सुरक्षित स्तरों के बारे में निम्नलिखित दस्तावेज पढ़ने के लिए सुझाव देता हूं। कभी कभी सेवाओं अज्ञात उपयोगकर्ताओं द्वारा एम्बेडेड स्क्रिप्ट के लिए स्तर 4 का उपयोग करें:

http://ruby-doc.org/docs/ProgrammingRuby/html/taint.html

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