2011-12-01 7 views
18

उदाहरण परिदृश्य: वेबसाईट कनेक्शन के माध्यम से वेब आधारित बहु-उपयोगकर्ता चैट एप्लिकेशन। मैं यह सुनिश्चित कैसे कर सकता हूं (या गारंटी) कि इस एप्लिकेशन में प्रत्येक कनेक्शन कुछ प्रमाणीकृत उपयोगकर्ता से संबंधित है और कनेक्शन के दौरान झूठी उपयोगकर्ता प्रतिरूपण या हस्तक्षेप द्वारा "नहीं किया जा सकता"।वेबसाईट कनेक्शन का उपयोग होने पर उपयोगकर्ता को प्रमाणीकृत करने के संभावित तरीके क्या हैं?

जिस तरह से मैं मूल चैट रूम को लागू करने के लिए सर्वर पक्ष पर टॉरनाडो वेबसाकेट का उपयोग कर रहा हूं और पहले से ही अपने ऐप के गैर-वेबसाईट भाग के लिए प्रमाणीकरण कर रहा हूं।

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

+0

क्या @ tornado.web.authenticated सजावटी tornado.websocket.WebSocketHandler के तरीकों के साथ काम करता है? – hymloth

+0

यह कह सकता है लेकिन जैसा कि मैंने कहा था कि उपयोगकर्ता के पहले से ही प्रमाणित किया गया है जब एप्लिकेशन के वेबसाईट भाग में आता है और मेरे पास वेबसाइट के सभी वेबसाइकिल श्रोताओं की सूची –

+0

है वेबसाइटॉक का उपयोग कर स्टैक ओवरव्लो चैट? – emaillenin

उत्तर

-4

यह वेबसाइकिल कनेक्शन का पूरा उद्देश्य है। आप हैंडशेकिंग प्रोटपॉल द्वारा उन्हें प्रमाणित करते हैं। अधिक जानकारी के लिए यहां देखें: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08

1

मुझे पूरा यकीन है कि वेबस्केट कनेक्शन आपके ऐप के गैर-वेबसाइकिल कनेक्शन में स्थापित की गई किसी भी कुकीज़ को भेजता है। आप कनेक्शन की कुकी के लिए Django के सत्र स्टोर से पूछताछ करने और सॉकेट से संबंधित उपयोगकर्ता को निर्धारित करने में सक्षम होना चाहिए।

चेक आउट: https://docs.djangoproject.com/en/1.3/topics/http/sessions/#configuring-the-session-engine

15

सबसे पहले, वहाँ दो चीजें आप WebSockets के बारे में याद रखना चाहिए रहे हैं: (क) यह एक उभरता हुआ मानक है और (ख) यह अविश्वसनीय ग्राहकों के साथ काम करने के इरादे से बनाया गया है।

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

ऐसा करने में समस्या यह है कि यह जानकारी खराब हो सकती है। इस के त्वरित प्रदर्शन के लिए this blog post देखें।

अतिरिक्त सुरक्षा:

  • एक नमकीन टोकन भेजने, यह नमकीन/टुकड़ों में बांटा और वापस भेज दिया और हाथ मिलाना चरण में मान्य होने की कोशिश करें।
  • सीमित अनुरोध जो अक्सर होते हैं (जैसे आईआरसी प्रोटोकॉल की तरह)। यदि उपयोगकर्ता ने एक सेकंड की अवधि के भीतर 10 लाइनें या अधिक सबमिट की है, तो उस उपयोगकर्ता को अनदेखा करें।
  • एक त्वरित स्पैम-चेक करें (इसके लिए बहुत सारे एल्गोरिदम हैं) - हल्के हेरिस्टिक के लिए चिपके रहें, अन्यथा यह आपके सर्वर को बोझ देगा। "मुक्त" या "वियाग्रा" शब्दों की उपस्थिति की तरह चीजें। उपयोगकर्ता को एक स्कोर दें जो संभावना है कि वे स्पैमिंग कर रहे हैं या एक बॉट हैं। जब इसका उल्लंघन होता है, तो उन्हें सर्वर से बूट करें।

आशा है कि मदद करता है! क्षमा करें अगर यह नहीं करता है। यह StackOverflow पर मेरा फ्रिस्ट जवाब है। : पी

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

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