记The state does not match. You may be a victim of CSRF.解决方法
今天有用户反馈本站网站QQ登录出现错误,自己测试发现QQ登录后提示如下错误:The state does not match. You may be a victim of CSRF.大多数搜索结果都是说回调地址错误,但是本站原先一直都是正确使用,因此可以排除这个问题,经检查代码,发现报错的原因是
$_REQUEST['state'] == $_SESSION['state']这个判断语句无法相等,那么只能检查这个原因了。
首先:$_SESSION['state'] = md5(uniqid(rand(), true));是代码自己生成的,并且需要保存到SESSION中,然后和$_REQUEST['state'] 返回的值进行比较,返回的值一般不会出什么问题(因为回调地址都是正确的),那么就是这个$_SESSION['state']的问题了,突然想起前几天在操作面板的时候卸载了Memcached 软件,而所使用的PHP的SESSION正好设置了以Memcached 保存,显而易见了,是因为卸载了Memcached ,导致session无法保存,也就无法正确对比值了。。。。安装好Memcached ,重启PHP,问题解决!
这里可以说站长自己脑子进水了。。操作的时候没有考虑全面,不过我想可能还会有粗心的站长会犯这个错误,所以这里写个教程,方便站长快速定位解决!
页:
[1]