मैं एक स्क्रिप्टिंग भाषा के आधार पर मांग पर कोड संकलित करने की सी # की क्षमता का उपयोग करने के विचार के साथ घूम रहा हूं। मैं सोच रहा था, मैं उन स्क्रिप्ट को कैसे सैंडबॉक्स कर सकता हूं जिन्हें मैं निष्पादित कर रहा हूं ताकि वे फ़ाइल सिस्टम, नेटवर्क इत्यादि तक नहीं पहुंच सकें। असल में, मुझे स्क्रिप्ट चलाने पर प्रतिबंधित अनुमतियां चाहिए।असेंबली। क्रिएट इंस्टेंस और सुरक्षा
कदम है कि मैं ले:
CompilerResults r = CSharpCodeProvider.CompileAssemblyFromSource(source);
Assembly a = r.CompiledAssembly;
IScript s = a.CreateInstance(...);
s.EntryPoint(...);
क्या आपके उदाहरण द्वारा निर्धारित सभी अनुमतियों को वापस करने से CallyourScriptHere() को रोकना कुछ भी है? – MarkP
'रिवर्टअल' केवल मौजूदा स्टैक फ्रेम में सेट सीएएस अनुमतियों को वापस लाता है, इसलिए इसे 'CallYourScriptHere' में कॉल करना केवल उस विधि में किए गए परिवर्तनों को पूर्ववत करेगा। – MagnatLU
यह संभावित रूप से दुर्भावनापूर्ण कोड के खिलाफ प्रभावी सुरक्षा नहीं है। Http://blogs.msdn.com/b/shawnfa/archive/2006/02/02/523390.aspx देखें कि क्यों स्टैक चलने वाले संशोधकों को सैंडबॉक्सिंग के लिए उपयोग नहीं किया जाना चाहिए। –