2011-07-22 18 views
5

मैं वर्तमान में एक ऐप विकसित कर रहा हूं जो एक webservice से जानकारी डाउनलोड करता है जिसे मैंने लिखा है (innet) और मैं कनेक्शन को सुरक्षित करना चाहता हूं ताकि केवल मेरा ऐप डेटा प्राप्त कर सके सर्विस। इस बारे में जाने का सबसे अच्छा तरीका क्या है?एंड्रॉइड ऐप से एक webservice से सुरक्षित रूप से

मैं नहीं चाहता कि कोई भी एक्सेस विवरण प्राप्त करने में सक्षम हो, यदि वे मेरे ऐप को इंजीनियर/रिवर्स करते हैं। क्या कोई तरीका है कि मैं ऐप की अखंडता को सत्यापित कर सकता हूं जो इसे वापस भेजने से पहले डेटा का अनुरोध कर रहा है?

मुझे इस बात की परवाह नहीं है कि इसमें क्या शामिल है, यह देखने के लिए यातायात को सूँघने में सक्षम होने के कारण, मैं अपने ऐप के अलावा कुछ भी नहीं चाहता हूं ताकि सभी डेटा को स्क्रैप करने वाले किसी के खिलाफ सुरक्षा के लिए अनुरोध जमा कर सकें।

मैं सुरक्षा में बहुत नौसिखिया हूं इसलिए कृपया जितना संभव हो सके!

उत्तर

2

क्रिस,

आप एक तंत्र पर पढ़ सकते हैं कहा जाता है एक बार पासवर्ड (OTP) का है। http://en.wikipedia.org/wiki/One-time_password

जब भी आप अपनी वेब सेवा से कनेक्ट करने का प्रयास करते हैं तो आप अपने आवेदन को ओटीपी उत्पन्न करने के लिए डिज़ाइन कर सकते हैं। ओटीपी की प्रामाणिकता को प्रमाणित करने की ज़िम्मेदारी वेब सेवा पर रहती है।

मुझे थोड़ी सी जानकारी में जाने दो। कल्पना करें कि आपका ऐप इसमें एक एल्गोरिदम एम्बेड करता है जो 256 बिट नंबर उत्पन्न करता है और जब भी यह वेब सेवा से कनेक्ट होता है। आपके द्वारा डिजाइन की जाने वाली वेब सेवा ओटीपी के वैधकर्ता भाग को भी लागू करती है। आम तौर पर ओटीपी एल्गोरिदम अपने कार्यान्वयन में "दिन का समय" खाता लेता है (मैं कुछ मुफ्त कार्यान्वयन के लिए Google को सुझाव देता हूं)। तो सर्वर एंड (ओटीपी वैलिडेटर) केवल तभी काम करता है जब सर्वर और क्लाइंट पर समय ताज़ा समय के विंडो (विंडो + - एन सेकेंड) के भीतर होता है। आम तौर पर, ओटीपी वैधकर्ता भी इसके अंत में ओटीपी उत्पन्न करेगा और केवल प्राप्त एक की तुलना करेगा। आप सर्वर पर जेनरेट किए गए ओटीपी के HASHES भेजने और तुलना करने से पहले ओटीपी को अतिरिक्त रूप से HASH कर सकते हैं (हालांकि मदद नहीं करता है या फिर कोई और सुरक्षित है)।

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

इसके ऊपर, आप केवल ओटीपी + "पब्लिक-आईडी" कॉम्बो का मनोरंजन करने के लिए तर्क जोड़ सकते हैं। अगर किसी ने सिर्फ अपनी वेब सेवा के लिए अनुरोध किया है और फिर से भेजता है तो यह रीप्ले हमलों को रोक देगा।

आशा है कि यह आपको कुछ विचार देता है।

उज्ज्वल

0

आप लेख

देख सकते हैं और इस Blackberry kSoap2 & Soap Header बहुत उपयोगी

+0

मुझे यकीन नहीं है कि मैं आपका उत्तर समझता हूं।फिलहाल मैं webservice से डेटा लाने के लिए मानक http का उपयोग कर रहा हूं। –

+0

http://stackoverflow.com/questions/1048310/how-to-call-a-net-web-service-from-android आप यह प्रश्न देख सकते हैं – acebisli

+0

मैं पूरी तरह से समझता हूं कि कैसे अपना वेबमाइट कॉल करना है, मेरा ऐप पहले से ही ऐसा करता है । मैं सिर्फ डेटा चोरी के खिलाफ कॉल को सुरक्षित करने के बारे में जानना चाहता हूं! –

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