gpt4 book ai didi

php - 这个 CSRF 保护是如何工作的?

转载 作者:可可西里 更新时间:2023-10-31 22:58:36 24 4
gpt4 key购买 nike

以下是从 Facebook 的身份验证页面获取的示例。将数据添加到 session 然后使用 javascript 重定向到 URL 背后的想法是什么?另外为什么要对 uniqid 进行 md5 哈希?

<?php 

$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_URL";

session_start();
$code = $_REQUEST["code"];

if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];

echo("<script> top.location.href='" . $dialog_url . "'</script>");
}

if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;

$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);

$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];

$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}

?>

最佳答案

我知道这可能会被指定为维基百科链接,但您可以在此处找到 csrf 的完整解释 http://en.wikipedia.org/wiki/Cross-site_request_forgery ,一旦您完全理解它是什么,您就会理解为每个用户提供一个唯一的 token 如何防止它。预防部分列出了使用每用户 token 作为一种预防方法。

关于php - 这个 CSRF 保护是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656097/

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