gpt4 book ai didi

javascript - Facebook API登录的安全性

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:32 24 4
gpt4 key购买 nike

我在使用“使用 Facebook 登录”实现我的第一个应用程序时遇到了一些问题。用户必须在我的系统中注册,但他可以将 FB 帐户关联到它。关联 FB 帐户后,我只需保存来自 Facebook 的用户电子邮件地址。

当用户点击“使用 facebook 登录”(考虑到他已经登录 facebook)时,我只是获取其个人资料电子邮件,并将其发送到服务器以验证是否有与该电子邮件关联的用户。如果存在这样的用户,我会为该用户创建一个 session 。这是获取用户电子邮件并将其发送到服务器的代码:

function login()
{
FB.api('/me',
function (user)
{
$.ajax(
{
url: "my_ajax_page.php",
type: "POST",
data: {controller: "MyController", action: "LinkEmail", fbmail: user.email},
success: function (response)
{
if(response == 1)
{
alert("Success!");
}
},
error: function ()
{
alert("Error");
}
}
);
}
);
}

这种方法存在一个很大的安全漏洞,任何人都可以创建一个脚本,向我的系统发送一封电子邮件,而这封“错误”的电子邮件将链接到当前登录的用户帐户:

function hacking()
{
$.ajax(
{
url: "my_ajax_page.php",
type: "POST",
data: {controller: "MyController", action: "LinkEmail", fbmail: 'someonemail@mail.com'},
success:
function (response)
{
if(response == 1)
{
alert("Success!");
}
},
error: function ()
{
alert("Error");
}
}
}

我可以使用什么方法来确保使用 FB 登录安全?

最佳答案

也许您应该将 signed__request 作为另一个参数发送到 Ajax 调用。只有具有自己的`app_secret您的 应用程序才能解码signed_request,因此如果您能够解码它 - 这意味着调用源自有效(已登录)Facebook 用户。

您可以通过此链接阅读有关签名请求的更多信息:
https://developers.facebook.com/docs/authentication/signed_request/

关于javascript - Facebook API登录的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com