我有一个PHP应用程序,其中使用jQuery / ajax加载页面。我的问题是,我需要包含每个请求ANTI CSRF令牌。
换句话说:当我发出第一个请求时,需要为下一个请求续订令牌。问题是:如何在表单的隐藏字段中设置新令牌?
我为令牌保留了一个共同的隐藏字段,并想到改变它的值。但问题是:如何设置新令牌?
我无法在ajax中执行此操作。如果用户本身被泄露,则令牌失败。
以下是示例代码
$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创建假帐户。然后,当他/她在另一个选项卡中登录我的站点时,他/她可以通过将referrer和其他标题字段伪造到我的站点来使用来自localhost的curl请求。用户可以从curl响应中获取csrf令牌!如果我错了,请纠正我。