[建站技巧]
记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.4 }+ ?4 q, x4 V8 @7 b& H7 c
大多数搜索结果都是说回调地址错误,但是本站原先一直都是正确使用,因此可以排除这个问题,经检查代码,发现报错的原因是4 [9 ^7 {2 z1 }3 r3 w. N8 l9 C
$_REQUEST['state'] == $_SESSION['state'] 这个判断语句无法相等,那么只能检查这个原因了。
0 |6 h' V/ E# w7 B% o; Z5 z
: O& `9 p5 a+ i6 A. m首先:$_SESSION['state'] = md5(uniqid(rand(), true)); 是代码自己生成的,并且需要保存到SESSION中,然后和$_REQUEST['state'] 返回的值进行比较,返回的值一般不会出什么问题(因为回调地址都是正确的),那么就是这个$_SESSION['state']的问题了,突然想起前几天在操作面板的时候卸载了Memcached 软件,而所使用的PHP的SESSION正好设置了以Memcached 保存,显而易见了,是因为卸载了Memcached ,导致session无法保存,也就无法正确对比值了。。。。安装好Memcached ,重启PHP,问题解决!
- G9 Q. C e( p* W# x+ ?
0 l9 c) }* T# ~' G5 {. Y5 @3 ~9 }这里可以说站长自己脑子进水了。。操作的时候没有考虑全面,不过我想可能还会有粗心的站长会犯这个错误,所以这里写个教程,方便站长快速定位解决!% F$ h5 h& v- @( n
a& D2 V& T" W! A) G9 X
8 |/ n% G9 S! m0 a& w
|
|