2011-08-22 20 views
5

मैं चाहता हूं कि मेरा बुकमार्कलेट उपयोगकर्ता को लॉगिन करने की आवश्यकता हो। यहां विचार है .... मैं उपयोगकर्ता के लॉगिन के लिए एक आईफ्रेम बना देता हूं, और ए/सी जानकारी दिखाता हूं। लेकिन मैं सर्वर से कुछ जानकारी प्राप्त करना चाहता हूं, उदाहरण के लिए, मैं जानना चाहता हूं कि उपयोगकर्ता पहले से ही इस पृष्ठ को मेरे सर्वर में जोड़ चुका है या नहीं। इसलिए, मैं एक अजाक्स कॉल करना चाहता हूं, लेकिन उसी मूल नीति के कारण, मैं इसे AJAX द्वारा नहीं कर सकता। तो, मैं आईफ्रेम से जानकारी कैसे प्राप्त कर सकता हूं?बुकमार्कलेट में प्रमाणीकरण कैसे करें?

कहानी कुछ इस तरह है:

उपयोगकर्ता वेब -> उपयोगकर्ता बुकमार्कलेट क्लिक करता है -> अगर में लॉग इन -> दिखाने के लिए एक बटन 'fav में जोड़ने के लिए' -> उपयोगकर्ता बटन fav के लिए ऐड क्लिक करता है, यूआरएल सर्वर पर जमा किया गया है, सर्वर को फिर से लोड करें।

उपयोगकर्ता वेब -> अगर लॉगिन नहीं - -> एक प्रवेश बटन दिखाने -> के लिए लॉग इन सफलता -> पिछले

उपयोगकर्ता वेब के रूप में प्रवाह कर -> उपयोगकर्ता बुकमार्कलेट क्लिक करता है> उपयोगकर्ता क्लिक बुकमार्कलेट -> में प्रवेश किया है -> जांचें कि वेबसाइट पहले से ही सर्वर पर जोड़ा गया है -> कोई एफएवी बटन

जैसा कि आप देख सकते हैं, केवल iframe लॉग इन उपयोगकर्ता की जानकारी संग्रहीत करता है।

+1

वही मूल नीति iframes iirc के अंदर प्रभावित नहीं होती है। बस मूल दस्तावेज़ में एक आईफ्रेम संलग्न करें। बुकमार्कलेट जेएस-कोड के अंदर, मूल पृष्ठ से इच्छित डेटा को आईफ्रेम पर जोड़ें और फिर आप जिस भी तरीके से चाहें उसके साथ खेल सकते हैं, जिसमें आपके डोमेन पर AJAX शामिल है। – aero

उत्तर

1

आप जो कर रहे हैं वह असंभव है क्योंकि यह origin inheritance rules का उल्लंघन करता है। इस पर इस तरीके से विचार करें। यदि आप इस फेशन में किसी अन्य वेबसाइट से जानकारी प्राप्त कर सकते हैं तो आप CSRF Tokens पढ़ सकते हैं, या किसी के ईमेल को उनके जीमेल खाते से पढ़ सकते हैं।

सीएसआरएफ की बात करते हुए, अधिकांश लॉगिन उपयोगकर्ता नाम/पासवर्ड के साथ एक साधारण पोस्ट हैं। आप अपनी वेबसाइट पर एक साधारण <form> बनाते हैं जो लॉगिन करने के लिए आवश्यक POST अनुरोध के समान है। जावास्क्रिप्ट का उपयोग करके आप फॉर्म पर .submit() पर कॉल कर सकते हैं जो ब्राउज़र को उनके नए प्रमाणीकृत सत्र में रीडायरेक्ट करेगा। वास्तव में यह है कि POST based CSRF exploit works (हालांकि आमतौर पर एक सीएसआरएफ हमले में आप मानते हैं कि ब्राउजर पहले ही प्रमाणीकृत है।)।

बेशक यह ओपनआईडी या जीमेल जैसे सभी अनुप्रयोगों के लिए काम नहीं करेगा। ऐसा इसलिए है क्योंकि इन सेवाओं में अक्सर लॉगिन अनुरोध के साथ यादृच्छिक मूल्य शामिल होता है।

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