2010-12-01 10 views
5

मैं एक WP7 एप्लिकेशन पर काम कर रहा हूं। यह WP7 एप्लिकेशन मैंने बनाए गए कुछ वेब सेवाओं से बातचीत करेगा। मैं नहीं चाहता कि अन्य एप्लिकेशन इन वेब सेवाओं के साथ बातचीत कर रहे हों। इसका कारण यह है कि मैं नहीं चाहता कि वे मेरा डेटा चोरी करें। इसे ध्यान में रखते, यहाँ मैं वर्तमान में क्या कर रहा है:एक WP7 ऐप से सुरक्षित/प्रमाणीकृत इंटरैक्शन

  • मेरी उन शुरू में आवेदन
  • उपयोगकर्ताओं पासिंग के लिए लॉग इन करना
  • HTTPS के माध्यम से वेब सेवाओं से कनेक्ट प्रत्येक वेब सेवा के साथ/पासवर्ड उपयोगकर्ता नाम बातचीत

इस समय, मुझे नहीं लगता कि एक दुर्भावनापूर्ण डेवलपर को उपयोगकर्ता नाम/पासवर्ड कॉम्बो बनाने से रोकना और अपने खाते में उस वेब खाते से बातचीत करने के लिए उस खाते का उपयोग करना बंद कर रहा है। मैं वास्तव में इस चीज़ को कैसे बंद कर सकता हूं?

धन्यवाद!

उत्तर

0

आप एक "अधिकृत एप्लिकेशन आईडी" सुविधा पेश कर सकते हैं जहां एप्लिकेशन प्रत्येक HTTP अनुरोध निकाय के भीतर अपना नाम या पहचानकर्ता भेजता है। फिर सर्वर की तरफ आप एप्लिकेशन की पहचान सत्यापित कर सकते हैं (उदा। एक अधिकृत तालिका में अधिकृत ऐप आईडी स्टोर करें)। एप्लिकेशन आईडी HTTP (एस) शरीर के भीतर एन्क्रिप्ट किया जाएगा।

यदि आप पुराने एप्लिकेशन आईडी से छुटकारा पाने के लिए चाहते हैं तो यह आपको WP7 एप्लिकेशन के अपडेट किए गए संस्करणों में नई एप्लिकेशन आईडी को धक्का देने का विकल्प भी देगा। आप भविष्य में अंतर उपकरणों या प्लेटफार्मों पर नए अनुप्रयोगों का समर्थन भी कर पाएंगे।

+0

समस्या यह है कि किसी ने .xap फ़ाइल डाउनलोड करने का निर्णय लिया है। वे अभी भी आवेदन आईडी देख सकते थे। यहां तक ​​कि obfuscation भी दोषपूर्ण नहीं है। इसे संबोधित करने का कोई तरीका होना चाहिए। – user462166

+0

अच्छा बिंदु। धन्यवाद। – kindohm

1

एक और अधिक सुरक्षित प्रणाली की शुरुआत के रूप में आपको पासवर्ड संग्रहित करना बंद कर देना चाहिए और इसे प्रत्येक अनुरोध के साथ तार पर भेजना चाहिए (भले ही आप SSL का उपयोग कर रहे हों)।

यदि आपको प्रत्येक अनुरोध के साथ इसे पास करना होगा, तो पासवर्ड के नमकीन हैश को स्टोर करें और इसके बजाय इसका उपयोग करें।

1

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

वैकल्पिक रूप से, यदि आपके परिदृश्य में कोई योग्यता है, तो अपने एपीआई को तृतीय पक्ष डेवलपर्स के लिए खोलें और यह कार्य अपने उद्देश्यों के प्रति बनाएं।

1

यदि आप अपने ऐप में एक कुंजी स्टोर करने का निर्णय लेते हैं, तो रॉ टेक्स्ट को स्टोर न करें बल्कि यूटीएफ 8 मानों की बाइट सरणी घोषित करें, यह पढ़ने में आसान नहीं होगा।

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

फ़ोन में लगभग सटीक समय होना चाहिए, ताकि आप प्रत्येक दिन या घंटे की कुंजी को फिर से समझ सकें। आप उस डिवाइस के लिए सर्वर के अंत में कुंजी को भी रद्द कर सकते हैं।

यह API यह सुनिश्चित करने में उपयोगी होगा कि आप डिवाइस को स्थायी रूप से ब्लैकलिस्ट कर सकें।

डिवाइस एक्स्टेंडेडप्रॉपर्टीज। गेटवैल्यू ("डिवाइसयूनिक ईडी")।ToByte();

मैंने आपके द्वारा सममित एन्क्रिप्शन में नहीं देखा है, यहां तक ​​कि उपरोक्त अद्वितीय आईडी को निजी कुंजी के रूप में उपयोग करने में सक्षम भी हो सकता है।

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

ल्यूक