2010-12-15 31 views
5

मैं अपने एपीआई पर एक तीसरी पार्टी .NET असेंबली चलाने के लिए चाहता हूं। मैं इसे अपनी इच्छानुसार अपनी विधियों और वस्तुओं को कॉल करना चाहता हूं, लेकिन इसे किसी भी चीज तक पहुंचने से इनकार करता हूं जो मेरी एपीआई स्पष्ट रूप से इसे नहीं देता है। विशेष रूप से, यदि मेरा एपीआई किसी ऑब्जेक्ट को तीसरे पक्ष कोड को IMyObject के रूप में पास करता है, तो मैं नहीं चाहता कि प्रतिबिंब या उस ऑब्जेक्ट को ऊपर उठाने के लिए किसी भी विधि का उपयोग करें, MyObject जो इंटरफ़ेस लागू करता है।क्या .NET असेंबली से प्रतिबिंब अक्षम करना संभव है?

क्या इस तीसरे पक्ष की असेंबली में प्रतिबिंब का उपयोग करने की क्षमता से इंकार करने का कोई तरीका है? मेरे पास सब कुछ का पूरा नियंत्रण है, इसलिए मुझे लोगों को मेरी असेंबली को कम करने से रोकने की ज़रूरत नहीं है, बस रनटाइम पर इसका दुरुपयोग करना।

उत्तर

4

जो आप खोज रहे हैं वह एक सैंडबॉक्स में एक असेंबली चला रहा है। यह .Net में CAS (Code Access Security) uisng प्राप्त किया जा सकता है।

यहां बताया गया है कि यह कैसे काम करता है। आप AppDomain बनाते हैं, इसे सीमित अनुमतियां असाइन करें। उदाहरण के लिए, आप यूआई प्रदर्शित करने की अनुमति देते हैं लेकिन फ़ाइल सिस्टम या प्रतिबिंब का उपयोग करने की अनुमति नहीं देते हैं। फिर आप इसमें एक असेंबली लोड करते हैं और इसे चलाने देते हैं।

नेट 4.0 एक नया नया सुरक्षा मॉडल प्रस्तुत करता है। लेकिन मुझे इसके बारे में बहुत कुछ पता नहीं है।

यहाँ पाने के लिए कुछ आप आरंभ है:

Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0

0

यदि कॉलर 'पूर्ण ट्रस्ट' पर चल रहा है तो ऐसा कुछ भी नहीं किया जा सकता है। वह हमेशा असेंबली की पूरी पहुंच होगी।

असेंबली को खराब करना सबसे अच्छा है। इससे असेंबली फिर से इंजीनियर के लिए थोड़ा मुश्किल हो जाएगी।

+0

क्षमा करें, तुम मुझे गलत समझा। मैं कॉलर हूं, और मैं किसी और की असेंबली को बुला रहा हूं। – Clueless

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