[英]Help to understand Facebook oauth code better
我是Facebook開發和PHP的新手。 我今天才剛開始,我想知道以下代碼片段的作用,
<?php
define('FACEBOOK_APP_ID', '123423');
define('FACEBOOK_SECRET', '3eesewee3e');
function get_facebook_cookie($app_id, $application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); //Why??
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {//Why checking not equals to 'sig'
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {//why is this checking
return null;
}
return $args;
}
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);
?>
我有點理解PHP函數及其用法。 我想知道為什么要這樣嗎?
我想知道帶有注釋的行的解釋//為什么。 我不太確定在這次交流中會發生什么,以及我們為什么要進行此類檢查等。
謝謝你的時間。
問候,Abhishek
查詢的第一行用cookie中的鍵/值填充$args
。
第二條查詢行在$args
鍵的循環中。 它忽略了'sig'
因為這是一個簽名並且不會被散列。
第三條查詢行檢查有效負載的哈希值是否與簽名匹配。
基本上,這段代碼所做的是解析cookie,將密鑰按標准順序排序,對排序后的密鑰進行哈希處理,然后將該哈希與簽名進行比較。 如果簽名與哈希不匹配,則說明cookie已被篡改。
$args
數組需要使用標准排序功能進行排序,因為數據的順序會影響哈希值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.