我正在我的 web 项目中使用 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 并恶意登录吗?我知道有一个 access_token 但我很困惑如何在后端使用该访问 token (或者,据我所知,其他任何东西)以确保即将到来的请求仅来自 Facebook 登录成功时的回调函数? 提前致谢
最佳答案
我个人的做法是使用PHP SDK再次检查用户是否登录:https://github.com/facebook/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']) {
...
}
关于javascript - 如何使用 javascript 安全地实现 fb 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22143532/