2012-10-12 10 views
7

मुझे एक एपीआई एक्सेस करने की आवश्यकता है जिसके लिए एक jquery मोबाइल एपीआई का उपयोग कर प्रति उपयोगकर्ता आधार पर http प्रमाणीकरण की आवश्यकता है।सुरक्षित रूप से एक jquery मोबाइल ऐप में स्थानीय रूप से उपयोगकर्ता पासवर्ड स्टोर करें

मैं ऐप को वेबसाइट के रूप में उपलब्ध कराने के साथ-साथ विभिन्न उपकरणों के लिए कॉर्डोवा में पैकेजिंग करने की योजना बना रहा हूं।

यदि मेरे पास लॉगिन फॉर्म है जो उपयोगकर्ता नाम और पासवर्ड कैप्चर करता है और इसे जावास्क्रिप्ट चर के रूप में संग्रहीत करता है, तो क्या इस डेटा को उजागर किया जा सकता है?

यदि हां, तो उपयोगकर्ता प्रमाणीकरण विवरण संग्रहीत करने के लिए सबसे अच्छा विकल्प क्या है? अगर मुझे ऐसा करने की ज़रूरत नहीं है तो मैं मध्यस्थ सर्वर बनाने के लिए अव्यवस्थित हूं।

बहुत धन्यवाद। : डी

+0

क्या यह HTTP मूल लेख का उपयोग करता है, या क्या यह प्रत्येक उपयोगकर्ता कॉल में पैरामीटर के रूप में पास किया गया उपयोगकर्ता नाम/पासवर्ड है? वास्तव में, – SilverlightFox

+0

दोनों। सर्वर पर प्रत्येक कॉल पर http मूल ऑथ - कोई ऑथ टोकन वापस नहीं आया। – significance

+0

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

उत्तर

3

मैं स्थानीय स्टोरेज में उपयोगकर्ता नाम या पासवर्ड संग्रहीत करने का सुझाव नहीं दूंगा, बल्कि इसके बजाय एक्सेस टोकन स्टोर करने का सुझाव दूंगा। एक्सेस टोकन को अपडेट और बार-बार बदला जा सकता है, यह यह भी नहीं बताता कि उपयोगकर्ता कौन है या उसका हैश पासवर्ड क्या है।

आईओएस कीचेन इसके अलावा

या आप अतिरिक्त सुरक्षा आप कर सकते हैं के लिए एक गैर iPhone डिवाइस के लिए यह कोडिंग कर रहे हैं:

  • बदलें प्रत्येक लॉग इन पर पहुँच टोकन और हर बार एप्लिकेशन प्रयोग किया जाता है
  • स्टोर सर्वर डेटाबेस में डिवाइस आईडी
  • साफ़ localStorage (http://docs.phonegap.com/en/2.2.0/cordova_device_device.md.html#device.uuid देखें) और एक नया प्रवेश का अनुरोध करता है, तो पहुँच टोकन या डिवाइस आईडी डेटाबेस में संग्रहीत डेटा से मेल नहीं खाता

सुनिश्चित करें कि आप स्थानीय आईडी में डिवाइस आईडी स्टोर नहीं करते हैं।

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

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

2

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

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

देशी ऐप के रूप में पैकेजिंग के बाद, आपके पास और विकल्प हैं, उदा। आईओएस कीचेन: http://shazronatadobe.wordpress.com/2010/11/06/ios-keychain-plugin-for-phonegap/

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