У меня есть некоторые проблемы с реализацией моего первого приложения с «Войти в Facebook». Пользователь ДОЛЖЕН быть зарегистрирован в моей системе, но он может связать с ним учетную запись FB. Когда связана учетная запись FB, я просто сохраняю адрес электронной почты пользователя из facebook.Безопасность с API facebook API
Когда пользователь нажимает «login with facebook» (учитывая, что он уже зарегистрирован в facebook), я просто просматриваю его профиль и отправляю его на сервер, чтобы проверить, есть ли у пользователя связанная с ним электронная почта. Если такой пользователь существует, я создаю сеанс для этого пользователя. Это код для захвата электронной почты пользователя и отправить его на сервер:
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: '[email protected]'},
success:
function (response)
{
if(response == 1)
{
alert("Success!");
}
},
error: function()
{
alert("Error");
}
}
}
Каким подходом можно использовать, чтобы сделать его безопасным для входа с FB?
Как я получаю это «signed__request», чтобы отправить его? Есть ли какой-нибудь рабочий пример контекста того, как я его буду использовать? FB api просто показывает, как его декодировать, а не как получить его. – IPValverde
Ссылка, которую я дал, 3 случая, когда подписанные запросы передаются вашему приложению. Вы должны изучить переменную '$ _REQUEST ['signed_request']'. – Lix
Плохо, я понял! Благодаря! – IPValverde