每个请求的反CSRF令牌

时间:2012-09-30 08:41:18

标签: jquery ajax csrf

我有一个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令牌!如果我错了,请纠正我。

0 个答案:

没有答案