使用唯一随机串防CSRF攻击例子
解决方法:
以QQ第三方登录为例子来使用唯一随机串防CSRF攻击,网站使用qq登录方式的时候,过程就是:点击网站上qq图标--》弹出qq授权登录页面--》跳回网站某个地址上。
1.在弹出qq授权登录页面之前,执行的php代码:
//-------生成唯一随机串$state防CSRF攻击,
$state1 = md5(uniqid(rand(), TRUE));$this->recorder->write('state',$state1;//把$state存入到session中
2.执行上面代码后,弹出授权页面,用户授权后,执行以下代码:
$state = $this->recorder->read("state");//把$state从session中读取出来
//--------验证state防止CSRF攻击
if(!$state || $_GET['state'] != $state){//$_GET['state']是授权前的$state1,和session中的state对比是否同一个人的随机数$this->error->showError("30001");
}