2010-05-13 15 views
7

मैं संभवतः कोको एप्लिकेशन (मैक, आईफोन नहीं) के लिए एक प्लगइन सिस्टम लिख रहा हूं।उद्देश्य-सी प्लगइन आर्किटेक्चर सुरक्षा (मैक, आईफोन नहीं)

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

एक अन्य प्लगइन सिस्टम जिसे हम विचार कर रहे हैं वह वितरित अधिसूचनाओं पर आधारित है। असल में, प्रत्येक प्लगइन एक अलग प्रक्रिया होगी, और वे केवल वितरित अधिसूचनाओं के माध्यम से संवाद करेंगे।

क्या बंडलों को सुरक्षित रूप से लोड करने का कोई तरीका है (उदा। सैंडबॉक्सिंग)? यदि नहीं, तो क्या आप वितरित अधिसूचनाओं का उपयोग करने में कोई समस्या देखते हैं? क्या कोई अन्य प्लगइन आर्किटेक्चर है जो बेहतर होगा?

उत्तर

2

हां, ओएस एक्स में sandboxing support प्रति-प्रक्रिया स्तर पर है। एकमात्र ओपन-सोर्स थर्ड-पार्टी क्लाइंट जो मुझे पता है Chrome है। आप Native Client जैसे रैपर की जांच भी कर सकते हैं।

यह कहा गया है कि सुरक्षा कारणों से सैंडबॉक्स प्लगइन्स को आजमाने में कोई बात नहीं है, जब तक कि आप नेटवर्क पर अविश्वसनीय प्लगइन्स या सामग्री लोड नहीं कर रहे हैं (यानी एक वेब ब्राउज़र)। यदि कोई स्थानीय रूप से आपके एप्लिकेशन को क्रैक करना चाहता है, तो वे केवल डीबगर, डीटी्रेस इत्यादि का उपयोग कर सकते हैं।

आपके ऐप और प्लगइन प्रक्रियाओं के बीच आप किस आईपीसी तंत्र का उपयोग करते हैं, वास्तव में आपके द्वारा किए जा रहे संचार के प्रकार पर निर्भर करता है। Intermachine वितरित ऑब्जेक्ट्स (मुझे लगता है कि आप जो लिखना चाहते हैं) निश्चित रूप से अधिकांश उद्देश्यों के लिए एक बुरा विकल्प नहीं है, लेकिन आप उस पर वीडियो नहीं भेजना चाहते हैं। आप CoreIPC देख सकते हैं, जो विकास के तहत WebKit2 उपयोग करता है; यह मैक बंदरगाहों पर काम करता है।

+0

सैंडबॉक्सिंग लिंक के लिए धन्यवाद। मैं वास्तव में 'NSDistributedNotificationCenter' के बारे में बात कर रहा था, लेकिन वितरित वस्तुओं पर मुझे बेहतर नजर आएगी। बंडलों के साथ मेरी चिंता यह है कि प्लगइन डेवलपर्स 'objc_getClassList' का उपयोग करेंगे और स्विजलिंग/कॉलिंग विधियों को शुरू करेंगे जिन्हें वे स्पर्श नहीं करना चाहिए, चाहे वह क्रैकिंग उद्देश्यों के लिए है या नहीं। ऐसा लगता है कि एक अलग प्रक्रिया निश्चित रूप से जाने का तरीका है। –

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