C# Facebook登录安全吗?

C# Facebook登录安全吗?,c#,asp.net,facebook,handlers,C#,Asp.net,Facebook,Handlers,我想让人们用“Facebook登录”登录。 但是,我想知道它是否足够安全,或者我只是做错了 成功登录后,我得到的是用户数据,带有facebook_id,由于我使用asp.net,我将其插入到数据库中,该数据库通过JavaScript reuest通过处理程序传递到服务器 但是,我认为通过恶意使用,可以改变数据。并向服务器插入垃圾,甚至插入不同的facebook\u id 所以我想知道“Facebook登录”是否足够安全,可以使用,还是我做错了。 我考虑了将客户端数据传递到服务器的其他选项——通过

我想让人们用“Facebook登录”登录。 但是,我想知道它是否足够安全,或者我只是做错了

成功登录后,我得到的是用户数据,带有facebook_id,由于我使用asp.net,我将其插入到数据库中,该数据库通过JavaScript reuest通过处理程序传递到服务器

但是,我认为通过恶意使用,可以改变数据。并向服务器插入垃圾,甚至插入不同的facebook\u id

所以我想知道“Facebook登录”是否足够安全,可以使用,还是我做错了。 我考虑了将客户端数据传递到服务器的其他选项——通过使用隐藏的runat=server文本框回发服务器,但恶意使用仍然可以更改这些文本框。我在这里读到了关于允许用户在Facebook用户名中添加密码的选项,但这听起来有点不友好


我说得对吗?这样做更安全吗?Facebook在客户端浏览器上放了什么cookie,我可以从服务器上读取吗?就像很多网站使用这种“Facebook登录”一样,可能还有另一种我没有想到的方式……

将访问令牌传递到服务器(或从Facebook的cookie集合中检查它),然后让服务器调用并通过这种方式获取Facebook ID。您可以通过从javascript sdk调用来获取访问令牌。

您可以使用oauth将此操作传输到服务器端

看看这篇博文:


从服务器上独立拨打电话很重要,尤其是当您将他们的facebook用户id存储在数据库或其他地方时。这样,你就知道它是否有效了

首先,在调用Facebook Javascript SDK中的FB.init函数后,您希望通过Javascript SDK获取用户的访问令牌和Facebook用户id,如下所示:

            FB.getLoginStatus(function (response)
            {
                if (response.status === 'connected')
                {
                    var token = response.authResponse.accessToken;
                    var facebookUserID = response.authResponse.userID;
                }
            });
第二,一旦你获得了一个令牌和facebook用户ID,你就会想把这些变量传递给你的服务器。如果同时使用WCF或其他形式的web服务,则可以创建如下方法:

        [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.


        }

现在,您已经验证了用户就是他们所说的用户

什么访问令牌?我没有得到一个用户登录后。