2012-06-07 12 views
6

मेरे पास एक विधि के साथ एक .NET असेंबली है जो सत्यापन योग्य नहीं है।सी # अप्रत्याशित कोड बिना अप्रबंधित अनुमति

मैं इस असेंबली को एक सैंडबॉक्स एपडोमेन में लोड करने की कोशिश कर रहा हूं।

यदि मैं स्किप सत्यापन के साथ लोड करता हूं, लेकिन अप्रबंधित के साथ मुझे सत्यापन अपवाद नहीं मिलता है। इसलिए जैसा:

new SecurityPermission(SecurityPermissionFlag.Execution | 
         SecurityPermissionFlag.SkipVerification); 

मैं अप्रबंधित अनुमति यह काम करता है के साथ लोड हैं, लेकिन फिर एप्लिकेशन डोमेन पर्याप्त "sandboxed" नहीं होगा।

new SecurityPermission(SecurityPermissionFlag.Execution | 
         SecurityPermissionFlag.SkipVerification | 
         SecurityPermissionFlag.UnmanagedCode); 

इसके अलावा - मैं नेट 4 चला रहा हूँ, और काम करने के लिए ऊपर मैं बहुत की तरह, transperancy मॉडल स्तर 1 पर स्विच करने के लिए किया था बनाने के लिए:

[assembly:SecurityRules(SecurityRuleSet.Level1)] 

तो, मेरे सवाल यह है:

  1. UnamangedCode अनुमति के बिना असत्यापित कोड चलाने का कोई तरीका है।
  2. ऊपर 2 कार्य स्तर 2 सुरक्षा नियमसेट के साथ काम करने का कोई तरीका है।

धन्यवाद!

+0

एक आवेदन या तो sandboxed है या नहीं। तो वास्तव में 'पर्याप्त sandboxed' नहीं होगा क्या मतलब है? ऐसा लगता है कि आपको वर्कअराउंड बनाने की कोशिश करने की बजाय एक असेंबली प्राप्त करने की आवश्यकता है। –

+0

इस सैंडबॉक्स में मुझे उपयोगकर्ता को खुद से बचाने की ज़रूरत है, न कि कुछ संभावित खतरे के खिलाफ। यही कारण है कि मैं अविश्वसनीय कोड के बारे में चिंतित नहीं हूं। लेकिन मैं अप्रबंधित कोड के बारे में चिंतित हूं। वैसे भी, मैं इसका उपयोग कुछ नेट फ्रेमवर्क के कारण सत्यापित नहीं कर सकता। – ravyoli

उत्तर

1

UnamangedCode अनुमति के बिना असत्यापित कोड चलाने का कोई तरीका है।

भले ही वहां था, तो आप उस समय किसी भी सुरक्षा को छोड़ देते। अविश्वसनीय कोड में अप्रबंधित कोड के समान शक्ति है। यह आपको उदाहरण के लिए प्रकार प्रणाली को तोड़ने की अनुमति देता है।

यह SkipVerification और UnmanagedCode (या अन्य तरीकों के आसपास) नहीं समझ में आता है। दोनों बराबर हैं और मैं इसे ढांचे में एक बग मानता हूं जो दोनों मौजूद हैं।

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