2011-09-29 7 views
11

मुझे पता है कि यह Same origin policy का उल्लंघन करता है, और यही कारण है कि यह सरल AJAX अनुरोध के माध्यम से संभव नहीं है। मैं JSONP का उपयोग कर सकता था। लेकिन लॉगिन के लिए JSONP का उपयोग सुरक्षित नहीं है (केवल कोई पोस्ट नहीं मिलता है)।लॉगिन के लिए AJAX के माध्यम से HTTP से HTTPS को कॉल करना

तो क्या AJAX के माध्यम से https में लॉगिन लागू करने का एक और अधिक सुरक्षित तरीका है?

+0

हां, समीकरण से 'HTTP' ले लो। यदि आप 'HTTP' के भीतर मूल के साथ 'GET' अनुरोध करते हैं तो यह cleartext है। अन्यथा, लॉगिन पृष्ठ पर 'HTTP' से' HTTPS 'को मजबूर करने के लिए सर्वर पर पुनः निर्देश डालें। – Anders

उत्तर

13

न केवल same origin policy का उल्लंघन करता है, लेकिन चूंकि आप जिस पेज से कॉल कर रहे हैं, वह असुरक्षित है, जिसके पास आप सुरक्षित रखने की कोशिश कर रहे सभी डेटा को हस्तक्षेप करने और रिसाव करने की क्षमता रखते हैं।

संपूर्ण प्रक्रिया के लिए HTTPS का उपयोग करें।

अभी तक बेहतर है, लोग लॉग इन करते समय HTTPS का उपयोग करते रहें, अन्यथा आपके पास the Firesheep problem होगा।

+0

मैं समझता हूं कि मुझे इसका जोखिम होगा। लेकिन चूंकि वेबसाइट पर कोई भी सामग्री उपयोगकर्ता उत्पन्न नहीं होती है, इसलिए यह हस्तक्षेप के जोखिम को कम कर देता है। लॉगिन सेवा एचटीटीपीएस में है, और मैं इसे http – MarutiB

+0

से कॉल करना चाहता हूं, इसके अलावा मैं लॉग इन किए गए सभी पृष्ठों के लिए https का उपयोग नहीं कर सकता, इसकी मीडिया भारी वेबसाइट है, और कैश पर https प्रभावित है, वास्तव में मेरी वेबसाइट को धीमा कर सकता है। – MarutiB

+0

@ क्वांटिन क्या आप जोखिमों पर विस्तार कर सकते हैं? डेटा कैसे लीक हो जाएगा? – Dave

1

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

प्लस साइड पर, कोई भी जो पैकेट स्नीफिंग नहीं कर रहा है, वह प्रमाण-पत्र प्राप्त करने में सक्षम होगा: एक हमले को काफी लक्षित करना होगा।

कुकीज़ के संबंध में, तकनीकी रूप से, जेएसओएनपी कुकीज़ को "वापस" कर सकता है; आप बस उन कुकीज के नाम-मूल्य जोड़ों को वापस कर देंगे जिन्हें आप सेट करना चाहते थे, और प्राप्तकर्ता पृष्ठ पर एक फ़ंक्शन सेट करें।

लेकिन जब तक ब्राउज़र <script> अलग-अलग व्यवहार नहीं करता है, और हो सकता है, तो आप अपने JSONP प्रतिक्रिया के प्रतिक्रिया शीर्षकों का उपयोग करके सामान्य तरीके से एक कुकी सेट करने में सक्षम होना चाहिए।

+0

मैं लोगों को अपनी वेबसाइट पर पंजीकरण करना आसान बनाना चाहता हूं। जो फिर से सुरक्षित होने की जरूरत है। तो जब कोई पंजीकरण पर क्लिक करता है। मैंने पंजीकरण के लिए एक पॉपअप लगाया और जब वह रजिस्टर पर क्लिक करता था तो मैं चाहता था कि AJAX के माध्यम से हो। – MarutiB

+1

@ मारुतिबी यह इस तरह का समय है कि मैं 'मुझे आश्चर्य है कि फेसबुक क्या करता है' के लिए डिफ़ॉल्ट है, और यह पता चला है कि वे जो कुछ करने की कोशिश कर रहे हैं, वही करते हैं। तो शायद आप ठीक हो। लेकिन हाँ, JSONP या सीधे https साइट (जेएसओएनपी के समान विचार) से जावास्क्रिप्ट प्रदान करने सहित आपका एकमात्र समाधान है। ऊपर कुकीज़ के बारे में अधिक। – Dave

+0

मुझे पता है :(मैं उपयोगकर्ता अनुभव में सुधार के लिए सुरक्षा में भुगतान करने के लिए एक छोटे से लागत अनुमान। – MarutiB

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