Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript安全地实现fb登录_Javascript_Jquery_Facebook_Web Applications_Login - Fatal编程技术网

如何使用javascript安全地实现fb登录

如何使用javascript安全地实现fb登录,javascript,jquery,facebook,web-applications,login,Javascript,Jquery,Facebook,Web Applications,Login,我正在我的webproject中使用Jquery实现facebook登录。一切都很好,但我担心人们可能会尝试黑客,因为firebug中的一切都是可见的。我的意思是,任何人都可以看到facebook请求访问的URL;数据随时可用,app_id嵌入到js文件中。所以,我想我可能做错了事情,所以我在这里,澄清这一点。因此,据我所知,Facebook登录的过程如下: ->User Clicks on 'FB Login' ->Request goes to Fb with App ID -&

我正在我的webproject中使用Jquery实现facebook登录。一切都很好,但我担心人们可能会尝试黑客,因为firebug中的一切都是可见的。我的意思是,任何人都可以看到facebook请求访问的URL;数据随时可用,app_id嵌入到js文件中。所以,我想我可能做错了事情,所以我在这里,澄清这一点。因此,据我所知,Facebook登录的过程如下:

->User Clicks on 'FB Login'
->Request goes to Fb with App ID
->Fb cross checks for App credentials
->Once authorised, it checks for user's credentials
->Asks user to log in if he/she isn't logged in->Returns the requested data by the app for the user
->Calls the call back function and that's where we come back again in scene.
在上面的过程中,让我困惑的是,如果用户在最后一步看到什么数据被传递到哪个URL,他难道不能简单地调用一个假脚本到该URL并恶意登录吗?我知道有一个访问令牌,但我不知道如何在后端使用该访问令牌(或我所不知道的其他任何东西),以确保将来的请求仅来自Facebook登录成功时的回调函数?
提前感谢

我个人的方法是使用PHP SDK再次检查用户是否登录:

您只需将用户的Facebook ID添加到AJAX调用中,在脚本开头检查服务器端的用户是否正确:

require 'facebook-php-sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'YOUR_APP_ID',
  'secret' => 'YOUR_APP_SECRET',
));

// Get User ID
$user = $facebook->getUser();
if ($user && $user === $_GET['fbid']) {
  ...
}

谢谢,但我更喜欢和JS呆在一起。并不是说我不懂PHP,而是从用户的角度来看,我喜欢在页面之间进行较少的导航。顺便说一句,添加用户的FB ID并不能保证安全,因为任何用户的FB ID都是随时可用的(我想你知道这一点),所以黑客攻击不会很难。我正在寻求一种方法来确保我的程序的安全性。但是如何返回应用程序数据呢?在任何情况下,您都需要一种服务器语言,但不必使用php。facebook为最著名的服务器语言提供SDK。当然,我在后端使用PHP。我的问题是,我不想仅仅为了登录Facebook而在几个页面之间导航,这就是我重新登录JS的原因。否则,PHP就足够安全了。。但是无论如何,我必须使用jsonly.JS来实现这一点。JS基本上是客户端的,没有什么可以提高安全性的。最后,当您需要使用php获取或(特别是)存储数据库中的内容时,这一切都归结为一点。只要在需要保护call.Hmm安全时,您就只需要包含我在回答中提到的php sdk。我想多个电话就可以了。我的意思是,在第一次调用中,我发送了一个包含用户邮件ID的Ajax请求。将该请求存储在会话变量中,并发回相同的邮件ID。在响应函数中,我调用fb的方法来获取访问令牌,然后匹配它,如果它包含一个类似于响应我的服务器而发送的电子邮件ID。一旦两者匹配,我就可以使用ajax请求和真实的状态消息再次调用服务器,或者类似的东西,在这里,我可以再次确保只有在设置了会话变量的情况下请求才会继续。。。?