2011-09-26 18 views
10

के साथ पैक किया गया डेटाबेस कितना सुरक्षित है मैं जानना चाहता हूं कि एंड्रॉइड में एप्लिकेशन के साथ डेटाबेस को पैक करना कितना सुरक्षित है। क्या डेटाबेस उपयोगकर्ताओं द्वारा आसानी से पहुंचा जा सकता है? चूंकि मेरे पास डेटाबेस में डेटा होगा जो मैं उपयोगकर्ताओं द्वारा दुरुपयोग के लिए हैक करना नहीं चाहता हूं, मोबाइल ऐप्स में डेटाबेस की सुरक्षा का सबसे अच्छा तरीका क्या है?एंड्रॉइड: एप्लिकेशन

इसके अलावा मेरा आवेदन वेब सेवा का उपयोग करेगा (अपनी वेबसाइट से संपर्क करना) उदा। http: \ www.mysite.com/services/xxx

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

मेरे डीबी को दुरुपयोग से सुरक्षित रखने के लिए कैसे?

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

क्या कोई सुझाव दे सकता है कि डीबी को कहां रखा जाए और इसे कैसे सुरक्षित रखा जाए?

Rgds, सपन

उत्तर

8

स्थानीय डेटाबेस और अपने apk फ़ाइल आसानी से किसी भी निहित डिवाइस द्वारा पढ़ा जा सकता। This toolthis youtube tutorial में समझाए गए अनुसार आपके संसाधनों को भी संकुचित कर सकता है (मैंने कभी भी वास्तव में कोशिश नहीं की)।

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

आपको संसाधन फ़ोल्डर में अपना संवेदनशील डेटा (जैसे पासवर्ड इत्यादि) नहीं डालना चाहिए, क्योंकि इसे डिमंपिल्ड किया जा सकता है, इसे अपने कोड में डालें।

अब आपके JSON API में कुछ शब्द हैं। यूआरएल को छिपाना पर्याप्त नहीं है, क्योंकि उपयोगकर्ता आसानी से स्निपफर द्वारा आपके अनुरोधों को ट्रैक कर सकता है और वैसे भी प्राप्त कर सकता है। आपको अनधिकृत पहुंच की सुरक्षा के लिए प्रमाणीकरण तंत्र प्रदान करना चाहिए और एसएसएल द्वारा आपके संचार की रक्षा करना चाहिए। (उदा। HTTP authentication का उपयोग करते हुए - केवल तभी समझ में आता है जब आपका सर्वर एसएसएल प्रदान करता है।)

ये चीजें हैं जिनके बारे में आपको सोचना चाहिए और खुद को तय करना है कि आपका डेटा वास्तव में कितना संवेदनशील है।

+0

क्या आप अनधिकृत पहुंच की सुरक्षा के लिए प्रमाणीकरण तंत्र स्थापित करने के बारे में अधिक जानकारी प्रदान कर सकते हैं? मैं इस डोमेन के लिए अपेक्षाकृत नया हूं। तो कोई मदद वास्तव में महान होगी .. – Sapan

+0

मुझे भी, हेहे ;-) मैं कुछ शोध करूँगा और इसके जवाब को अपडेट करूँगा जब मुझे इसके लिए कुछ उपयोगी जानकारी मिल जाएगी। – Knickedi

+0

मैंने एक विकिपीडिया लिंक जोड़ा :- डी HTTP प्रमाणीकरण अनुरोध सुरक्षा के लिए सबसे सामान्य समाधान हो सकता है। – Knickedi

1

जांच इस विघटित करने के लिए अपने apk फ़ाइल की रक्षा के लिए लिंक

How to make apk Secure. Protecting from Decompile

Protecting Android apk to prevent decompilation, network sniffing etc

decompiling DEX into Java sourcecode

+0

हाय प्रेटेक.. वैल्यूएबल जानकारी के लिए धन्यवाद ... अब मैं अपने ऐप में प्रोजेवार्ड का उपयोग मुश्किल से करने के लिए सोच रहा हूं। मुझे अभी भी यह पता लगाना होगा कि वेब सेवा अनुरोध और डेटाबेस को सुरक्षित कैसे बनाया जाए। – Sapan

2

जहां तक ​​मेरा आप को समझने के लिए जा रहे हैं:

  1. अपने प्रारंभिक डीबी पैक करें APK फ़ाइल (res/संपत्ति फ़ोल्डर के साथ कहते हैं)
  2. पहली बार चलाने के दौरान समय पर से वेबसाइट/वेब सेवा

से डीबी में डेटा लाने इस में रेस/अनुप्रयोग डेटा फ़ोल्डर में संपत्ति से

  • तब डीबी फ़ाइल विस्फोट

    1. प्रारंभिक डीबी छवि है, क्योंकि यह APK (जो वास्तविक जीवन बस ज़िप संग्रह में है) के साथ पैक किया है, इसलिए किसी को भी खोल और देखें कि आपके डीबी में पैक है कर सकते हैं: मामला मूल रूप से 2 कमजोरियों (संग्रहीत डेटा मेरा मतलब है) कर रहे हैं
    2. डी बी फ़ाइल अनुप्रयोग डेटा फ़ोल्डर में संग्रहित (आमतौर पर/डेटा/डेटा/MY_APPLICATION_PACKAGE/डेटाबेस)। यह फ़ोल्डर रूट डिवाइस पर पहुंच योग्य है, इसलिए फिर से आपका डेटा आसानी से स्क्रीन किया जा सकता है

    सुरक्षित होने का एकमात्र विकल्प आपकी डेटाबेस सामग्री को एन्क्रिप्ट करना है। बीएलओबी (जेएसओएन के एक्सएमएल के रूप में) में संवेदनशील डेटा स्टोर करने और कुछ रिकॉर्ड्स के वास्तविक उपयोग के बाद उन बीएलओबी को एन्क्रिप्ट/डिक्रिप्ट करने के लिए इसे करने का सबसे आसान तरीका।

    स्वयं ने व्यक्तिगत रूप से इसे अपने ऐप में किया - और यह अच्छी तरह से काम करता है।

  • +0

    उत्तर के लिए धन्यवाद ... क्योंकि मैं डेटाबेस में एक विशेषज्ञ नहीं हूं, क्या आपके लिए एक साधारण उदाहरण प्रदान करना संभव होगा। प्रोगुर्ड एपीके के भीतर डेटाबेस को सुरक्षित रखने में भी मदद करेगा? – Sapan

    +0

    @Sapan यहां संदर्भों के लिए देखो http://stackoverflow.com/questions/6043984/sqlite-encryption-for-android प्रोगुआर्ड obfuscation के बारे में - यह आपको डीबी सुरक्षित करने में मदद नहीं करता है, यह केवल आपके कोड – barmaley

    +0

    के लिए बहुत कुछ है पॉइंटर्स .. मैं निश्चित रूप से संदर्भों के माध्यम से जाऊंगा और आपको बताऊंगा कि क्या मेरी ज़रूरतों के अनुरूप है या नहीं .. स्केलिफर एक अच्छा विकल्प प्रतीत होता है लेकिन इसकी डेवलपर केवल अभी तक रिलीज है ... वेब की रक्षा कैसे करें इस पर कोई विचार अनधिकृत पहुंच से बचने के लिए सेवा अनुरोध? – Sapan

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