Facebook SDK からのログイン URL を要求する場合、state
CSRF を防ぐためにセッションに保存されます。これはFacebook
クラスsetPersistentData($key, $value)
メソッドで行われます。
$session_var_name = $this->constructSessionVariableName($key);
$_SESSION[$session_var_name] = $value;
その後、私はそれがそこにあり、何も配列を変更できないことを確認するためvar_dump
に$_SESSION
andを作成しました。そしてほら、そこにあります:exit;
$_SESSION
...
'fb_451994004840680_state' => string '6de843508d52d3d4926275ab49280cef' (length=32)
...
だから私はindex.php
ファイルを
session_start();
var_dump($_SESSION);
exit;
そしてリフレッシュ。以前に設定されたセッション要素はすべてそこにありますが、facebook の状態はありません。
そこで、次のことを試しました:setPersistentData($key, $value)
メソッドに別の (ダミー状態の) キーを追加しました:
$_SESSION[$session_var_name] = $value;
$_SESSION['fb_1234567890_state'] = '848a87592acd';
var_dump($_SESSION);
exit;
どちらも var_dump の直後に設定されます。
'fb_451994004840680_state' => string '6de843508d52d3d4926275ab49280cef' (length=32)
'fb_1234567890_state' => string '848a87592acd' (length=12)
index.php でのリフレッシュと var ダンプの後、ダミー キーのみが存在します。
'fb_1234567890_state' => string '848a87592acd' (length=12)
これはどのように可能ですか?