2012-01-25 15 views
11

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

+1

security.stackexchange.com पढ़ें साथ ही इस सवाल के लिए एक अच्छा मंच हो सकता है। –

उत्तर

9

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

तो, हाँ, जोखिम है। आपको टोकन को किसी भी/किसी भी चीज़ तक पहुंच से बचाने की ज़रूरत है, जो आपके ऐप के रूप में फेसबुक उपयोगकर्ता के समान अधिकार नहीं रखता है।

+3

लेकिन एक्सेस टोकन उपयोग एप्लिकेशन डोमेन तक ही सीमित है। तो ऐसा लगता है कि अन्य एप्लिकेशन इसका उपयोग करने में सक्षम नहीं होगा। – Andy

+2

आपके ऐप के पास आपके उदाहरण के अनुसार फेसबुक के लिए एक्सेस टोकन है। इसका मतलब है कि फेसबुक पर कार्रवाई ए, बी और सी करने का अधिकार है। कोई भी जो उस टोकन को पकड़ता है, अब फेसबुक पर ए, बी और सी को कार्रवाई करने के समान अधिकार है। एप्लिकेशन डोमेन अन्य एप्लिकेशन को टोकन स्वीकार करने से रोकता है लेकिन फेसबुक जो इसे सबमिट कर रहा है, इस पर ध्यान दिए बिना, खुशी से इसे स्वीकार करेगा। यही कारण है कि ओथ टोकन को संरक्षित किया जाना चाहिए और अल्पकालिक रहना चाहिए। OAuth 2.0 Bearer Tokens पर आईईटीएफ इंटरनेट ड्राफ्ट को इसे अच्छी तरह से समझा जाना चाहिए: http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html – jeffsix

+0

मुझे समझा। अभी तक ... मैं अपने उद्देश्य के लिए एक ऐप का उपयोग कर रहा हूं और इसमें कोई अन्य उपयोगकर्ता शामिल नहीं है। मैं cron का उपयोग कर अपने लेख के लिए पोस्ट टिप्पणियां पढ़ना चाहता था। इसलिए मैंने एक लंबे समय तक पहुंचने वाली टोकन बनाई जो इस तिथि तक 60 दिन लंबी है। मुझे यकीन है कि यह सर्वर साइड स्क्रिप्ट में प्रयोग किया जाता है। मुझे इसे एक डीबी या फ्लैट फ़ाइल में स्टोर करना होगा। मैं जिस अनुमति को सेट करता हूं वह सिर्फ ऑफलाइन_एसीएएस था। यदि यह एक्सेस टोकन सार्वजनिक हो गया है तो उस एक्सेस टोकन पर सभी कार्रवाइयां क्या हैं? दूसरे शब्दों में मैं केवल उन टिप्पणियों को पढ़ने के लिए कैसे प्रतिबंधित करूं और कोई अन्य ऑपरेशन नहीं? उम्मीद है कि मैंने इसे स्पष्ट कर दिया था? –

13

आप

  1. Confused deputy का खतरा होता है - अपने कोड कोड है कि वे विशेषाधिकार का दुरुपयोग हो सकता है या तो जानबूझकर या अभी और अधिक कोड की ओर से जो दुर्भावनापूर्ण है पर अभिनय द्वारा करने के लिए विशेषाधिकार दे रहा है।
  2. चोरी code injection (एक्सएसएस) के माध्यम से चोरी - आपके पृष्ठ में एक एक्सएसएस भेद्यता के माध्यम से कोड को इंजेक्शन द्वारा प्रमाणित किया जा सकता है और फिर उपयोगकर्ता की तरफ से कार्य करने के लिए उपयोग किया जाता है, संभवतः लॉग उत्पन्न करना जो आपको अपराधी के रूप में दर्शाता है।
  3. चोरी के माध्यम से चोरी - यदि ब्राउज़र और आपके सर्वर के बीच कनेक्शन में गैर-HTTPS सामग्री चल रही है, तो पैकेट पढ़ने की क्षमता वाले एक सहेजने वाला व्यक्ति प्रमाण-पत्र चुरा सकता है।
  4. मैलवेयर द्वारा चोरी - यदि उपयोगकर्ता के कंप्यूटर पर मैलवेयर चल रहा है, तो ब्राउज़र में उन प्रमाणपत्रों को भेजकर उन्हें उस मैलवेयर पर उजागर किया जाता है। मैलवेयर शायद ब्राउजर द्वारा लिखी गई ब्राउज़र प्रक्रिया या कैश फाइलों के स्वामित्व वाली स्मृति को पढ़ना होगा।
+0

डोमेन तक सीमित टोकन तक पहुंच नहीं है? –

+1

लगभग # 4 ... यदि मैलवेयर है तो उपयोगकर्ता पहले से ही परेशानी में है, और एक्सेस टोकन भेजने से सुरक्षा स्तर का कोई और स्तर नहीं बनना चाहिए, नहीं? क्योंकि यदि मैलवेयर ब्राउज़र को नियंत्रित और एक्सेस कर सकता है तो यह साइट पर जा सकता है और निजी सामग्री पढ़ सकता है .. –

+0

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

3

उस टोकन को एक्सेस करने के लिए अनुमति देने वाले किसी भी चीज़ को करने के लिए कहीं भी टोकन का उपयोग किया जा सकता है। जो इसे शक्तिशाली बनाता है, है ना?

तो, जावास्क्रिप्ट में access_token को उजागर करना वास्तव में इस बात पर निर्भर करता है कि जावास्क्रिप्ट कहां से चल रहा है, और टोकन तक पहुंचने वाले किस प्रकार के नेटवर्क को भेजा जा रहा है।

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

यदि डिवाइस सामान्यतः साझा इंटरनेट टर्मिनल कहता है, यहां तक ​​कि https के साथ भी, जहां हर कोई एक ही उपयोगकर्ता खाते का उपयोग करता है, तो यदि ब्राउज़र पर इतिहास फ़ाइलों के माध्यम से एक क्रूक स्नूप हो जाता है और उस टोकन को खींचता है। बुरा बुरा बुरा।

यदि http पर संचार कर रहा है, तो यह पूरी दुनिया को देखने के लिए व्यापक रूप से खुला है। बुरा बुरा बुरा।

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

2

का खुलासा सुरक्षा टोकन अपने उपयोगकर्ताओं होने का कमजोर कर सकते हैं हैक

मैं एक सॉफ्टवेयर "FaceNiff" है कि निहित एंड्रॉयड फोन पर चलता है याद है, यह फेसबुक की सुरक्षा टोकन और अन्य वेबसाइटों sniffs और आप कर सकते हैं किसी भी उपयोगकर्ता के खाते से लॉगिन करें जो उस वाईफ़ाई से जुड़ा हुआ है।

एक और एंड्रॉइड सॉफ्टवेयर में एक सुरक्षा दोष था जो हैकर्स को आपके जीमेल कैलेंडर सुरक्षा टोकन को स्नीफ करने देता है और पूर्ण पहुंच प्राप्त कर सकता है।

इस पोस्ट http://www.techlicious.com/blog/android-security-flaw-could-expose-you-to-data-theft/

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