我遇到了一些問題,實施我的第一個應用程序與「登錄Facebook」。 用戶必須在我的系統中註冊,但他可以將FB賬戶關聯到它。當一個FB帳戶關聯時,我只保存來自Facebook的用戶電子郵件地址。安全與Facebook API登錄
當用戶點擊「使用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 2012-02-09 13:06:06
我提供的鏈接詳細說明了3個簽名請求時的情況傳遞給您的應用程序。你應該檢查'$ _REQUEST ['signed_request']'變量。 – Lix 2012-02-09 13:09:42
我的不好,我明白了!謝謝! – IPValverde 2012-02-09 14:22:09