我有一个使用 jQuery/ajax 加载页面的 PHP 应用程序。我的问题是,我需要包含每个请求的 ANTI CSRF Token。
换句话说:当我发出第一个请求时,需要为下一个请求更新令牌。问题是:如何在表单的隐藏字段中设置新令牌?
我为令牌保留了一个公共隐藏字段,并考虑更改其值。但问题是:如何设置新的Token?
我不能在ajax中做到这一点。如果用户本身受到威胁,则 Token 失败。
这是示例代码
$key=md5(rand(1,9999).md5(date("Ymdhisu")).rand(1,9999));
$token=md5(getIpAddress().rand(1,9999).CM_SALT_CSRF);
$hash_key=$key.$token;
$hash_key=hash('sha512', $hash_key);
$session_key=$hash_key;
$_SESSION['CSRF_TOKEN']=$session_key;
$_SESSION['KEY']=$key;
然后我在隐藏字段中设置了 $token。
现在,在我使用 TOKEN 提交请求后,处理后将生成并设置一个新的 CSRF 令牌。由于它在 2.0 中,如何将新令牌值设置为隐藏字段?
如果我通过请求某些页面和 JavaScript 来设置新令牌,那么它也可以通过 CURL 来完成,对吗?
希望我清楚???
编辑 1
我的情况是,如果用户本身是黑客,使用假电子邮件 ID 创建假帐户怎么办。然后他/她可以在他/她在另一个选项卡中登录我的网站时,通过将引荐来源网址和其他标题字段伪造到我的网站来使用来自本地主机的 curl 请求。用户可以从 curl 响应中获取 csrf 令牌!?如果我错了,请纠正我。