2012-02-04 14 views
6

मैं लोगों को "फेसबुक लॉगिन" के साथ लॉग इन करना चाहता हूं। लेकिन, मुझे आश्चर्य है कि यह पर्याप्त सुरक्षित है, या मैं बस गलत कर रहा हूं।फेसबुक लॉगिन सुरक्षित?

सफल लॉगिन के बाद मैं जो वापस प्राप्त कर रहा हूं वह उपयोगकर्ता डेटा है, जो फेसबुक_आईडी के साथ है, जिसे मैं एस्पेर के माध्यम से सर्वर पर एक जावास्क्रिप्ट रीयूस्ट द्वारा पारित डीबी में डाला जा रहा हूं क्योंकि मैं एएसपीनेट का उपयोग कर रहा हूं।

लेकिन, मुझे लगता है कि एक दुर्भावनापूर्ण उपयोग से, कोई उस डेटा को बदल सकता है। और सर्वर पर बकवास डालें, या यहां तक ​​कि अलग facebook_id डालें।

तो मुझे आश्चर्य है कि "फेसबुक लॉगिन" उपयोग करने के लिए पर्याप्त सुरक्षित है, या मैं इसे गलत कर रहा हूं। मैंने उस क्लाइंट डेटा को सर्वर पर पास करने के अन्य विकल्प के बारे में सोचा - सर्वर को एक छिपे हुए रनैट = सर्वर टेक्स्टबॉक्स के साथ पोस्टबैक करके, लेकिन फिर भी, दुर्भावनापूर्ण उपयोग उन टेक्स्टबॉक्स को बदल सकता है। मैंने उपयोगकर्ताओं को अपने फेसबुक उपयोगकर्ता नाम में पासवर्ड जोड़ने के विकल्प के बारे में यहां पढ़ा है, लेकिन यह थोड़ा-सा उपयोगकर्ता के अनुकूल नहीं लगता है।

क्या मैं सही हूँ? क्या यह और अधिक सुरक्षित करने का एक तरीका है? क्या कोई कुकी है जो फेसबुक क्लाइंट ब्राउज़र पर रखती है जिसे मैं सर्वर से पढ़ सकता हूं? हालांकि कई वेबसाइटें इस "फेसबुक लॉगिन" का उपयोग करती हैं, लेकिन ऐसा कोई अन्य तरीका हो सकता है जिसके बारे में मैंने नहीं सोचा था ...

उत्तर

4

सर्वर तक पहुंच टोकन पास करें (या कुकी फेसबुक सेट से इसकी जांच करें) और फिर सर्वर को https://graph.facebook.com/me?access_token=... पर कॉल करें और उस तरह से फेसबुक आईडी प्राप्त करें। आप जावास्क्रिप्ट एसडीके से FB.getLoginStatus पर कॉल करके access_token प्राप्त कर सकते हैं।

+0

टोकन किस तक पहुंच है? मुझे उपयोगकर्ता लॉगिन के बाद यह नहीं मिल रहा है। – Yaniv

0

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

  FB.getLoginStatus(function (response) 
      { 
       if (response.status === 'connected') 
       { 
        var token = response.authResponse.accessToken; 
        var facebookUserID = response.authResponse.userID; 
       } 
      }); 

दूसरा,:

सबसे पहले, फेसबुक जावास्क्रिप्ट SDK में FB.init फ़ंक्शन कॉल के बाद, आप जावास्क्रिप्ट SDK के माध्यम से उपयोगकर्ता की पहुँच टोकन और फेसबुक उपयोगकर्ता आईडी इस के समान प्राप्त करना चाहते हैं एक बार जब आपको टोकन और फेसबुक उपयोगकर्ता आईडी मिल जाए, तो आप उन चर को अपने सर्वर पर पास करना चाहेंगे। आप WCF या JSON.NET के साथ वेब सेवा का एक अन्य स्वरूप का उपयोग कर रहे हैं, तो आप इस जैसे एक विधि बना सकते हैं:

 [WebInvokeAttribute(BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
     [OperationContractAttribute] 
     public Stream AuthenticateFacebook(string facebookUserId, string token) 
     { 
      var json = new WebClient().DownloadString(string.Format("https://graph.facebook.com/me?access_token={0}", token)); 

      JObject parsedJson = JObject.Parse(json); 

      //Ensure that there isn't a random Facebook server error 
      if (parsedJson["error"] != null) 
      { 
       throw new FaultException("Error parsing Facebook token."); 
      } 

      //Ensure the facebook user ID passed in via the client matches the one received from the server. 
      if (Convert.ToString(parsedJson["id"]) != facebookUserId) 
      { 
       throw new FaultException("Facebook login ids do not match. Something fishy is going on..."); 
      } 

      //Now you know you have a valid facebook login id. Do your database stuff or whatever else here. 


     } 

अब आप मान्य है उपयोगकर्ता वे जो कहते हैं वे कर रहे हैं है।

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