2012-03-05 16 views
5

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

अब हम अपने समुदाय को प्लगइन बनाने देना चाहते हैं। बस उन्हें थोड़ा स्क्रिप्ट 3 के साथ एक छोटी एनिमेटेड तस्वीर बनाने दें।

एक प्लगइन रनटाइम पर बाहरी .swf फ़ाइल के रूप में लोड होने जा रहा है। और, ज़ाहिर है, हम चाहते हैं कि हमारे उपयोगकर्ता नेट पर प्लगइन वितरित करें।

लेकिन, हमारे पास सुरक्षा चिंता है। क्या होगा यदि कुछ बुरे व्यक्ति विन एपीआई पर अप्रत्यक्ष पहुंच का लाभ उठाएंगे?

मैंने एक छोटा परीक्षण किया है। प्रोग्राम में लोड किया गया एक बच्चा। एसडब्ल्यूएफ बाहरी इंटरफेस विधियों को कॉल करने का प्रयास करता है। यह पता चला कि child.swf ऐसा करने में सक्षम था। तो हमारे प्रोग्राम में लोड की गई प्रत्येक .swf फ़ाइल को स्वचालित रूप से Win API तक पहुंच होगी।

हमारे प्रोग्राम के लिए प्लगइन डाउनलोड करना एक .exe फ़ाइल के रूप में खतरनाक हो जाता है।

क्या हम लोड किए गए .swf तक बाहरी इंटरफेस पहुंच को रोक सकते हैं? यदि नहीं - तो सुरक्षा के साथ AS3 में प्लगइन सिस्टम को आप कैसे कार्यान्वित करेंगे?

मैं मदद कर सकता हूं कि किसी भी सुझाव की सराहना करता हूं।

उत्तर

1

अच्छी तरह से मुझे एएस 3 में किसी भी स्पष्ट तरीकों के बारे में पता नहीं है। लेकिन यहाँ मैं क्या प्रस्ताव है:

  • WinAPI से पहले एक्सेस किया जाता है, वहाँ जाने मुख्य SWF करने के लिए एक कॉलबैक अनुरोध अधिकृत करने के लिए हो सकता है।

  • यदि अनुरोध मुख्य एसडब्ल्यूएफ द्वारा किया जाता है तो प्राधिकरण सफल होना चाहिए।

  • यदि बच्चा एसडब्ल्यूएफ अनुरोध करता है, तो मुख्य एसडब्ल्यूएफ अनुरोध से इनकार कर देगा।


संपादित

बच्चे swf वास्तव में मुख्य swf कॉल ovverride नहीं हो सकता है। यदि ऐसा होता है तो आप इसे मुख्य रूप से मुख्य से वापस ले सकते हैं। इसके अलावा बच्चे के लिए बाहरी इंटरफेस नहीं है, मुख्य swf।

किसी भी तरह से, प्लगइन लेखक को प्रमाणीकरण फ़ंक्शन के हस्ताक्षर को तब तक जानना मुश्किल होगा जब तक कि आप इसे साझा न करें।

+0

लेकिन क्या बच्चे एसडब्ल्यूएफ बाहरी इंटरफेस.डैडबैकबैक() का उपयोग कर प्राधिकरण कॉलबैक विधि को ओवरराइड कर सकता है? मुझे एक या दूसरे तरीके से पता नहीं है और डॉक्टर निर्दिष्ट नहीं करता है: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback() –

+0

एरेन क्या आप बाहरी और इंटरफेस से बच्चे और मुख्य swfs के बीच अंतर करने में सक्षम नहीं हैं? एक ब्राउज़र कर सकता है, इसलिए एक कस्टम बाहरी इंटरफेस में कम से कम इस कार्यक्षमता –

+0

@ माइक मेरे संपादन देखें। – loxxy

0

आपको अपने स्वयं के sand box को लागू करने के लिए SWF फ़ाइल के लिए नई प्रक्रिया बनाने की आवश्यकता है। मुझे लगता है कि अगर आप एक सच्चे वायु घटक (एक नई एक्सई फाइल) शुरू करेंगे तो यह सबसे अच्छा होगा जो इस swf

+0

मुझे बाहरी एसडब्ल्यूएफ को मुख्य में एम्बेड करने की आवश्यकता है। तो एक नई प्रक्रिया खोलने से मदद नहीं मिलेगी। वैसे भी धन्यवाद! – Pavel

+0

प्रक्रियाओं के बीच बोलने के लिए प्रोटोकॉल का उपयोग करने के बारे में कैसे? मुझे लगता है कि यह वह दिशा है जहां आपको अपने समाधान की तलाश करनी होगी। यह आपको 100% सुरक्षा प्रदान करेगा। –

+0

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

0

यदि आप मुझसे पूछेंगे, तो मैं अपने प्रोजेक्टर में कोड जोड़ूंगा ताकि यह बताने में सक्षम हो कि लोड हो गया है एक प्लगइन या मुख्य ऐप है।

फिर, यह मुख्य प्रोग्राम पूछने जितना आसान होगा अगर यह बाहरी इंटरफेस कॉल की उत्पत्ति करता है।

एक आसान बात एसएफएफ में वर्तमान टाइमस्टैम्प को एन्क्रिप्ट करना और प्रोजेक्टर को भेजना होगा, जो पैरामीटर को डिक्रिप्ट करेगा, और कॉल को मान्य करेगा।

बेशक

, किसी भी तरह के समाधान पूर्णतः की आवश्यकता होगी अपने सी ++ प्रोजेक्टर और SWF बेहद अच्छी तरह से समझ से परे हो।

+0

एन्क्रिप्शन के बारे में अच्छा विचार। लेकिन हम दोनों जानते हैं कि यह रक्षा 100% सुरक्षित नहीं है। क्योंकि किसी भी obfuscation 100% विश्वसनीय नहीं है। बुरे व्यक्ति को अंततः निजी कुंजी मिल सकती है। समस्या यह है कि हमें यह सुनिश्चित करना होगा कि प्लगइन सिस्टम सुरक्षित है। अन्यथा हम हैकर्स के साथ एक अंतहीन युद्ध में संलग्न होंगे। वैसे भी धन्यवाद! – Pavel

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