今天有用户反馈本站网站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,问题解决!
这里可以说站长自己脑子进水了。。{:4_118:}操作的时候没有考虑全面,不过我想可能还会有粗心的站长会犯这个错误,所以这里写个教程,方便站长快速定位解决!
历史资源提醒--必看
该页面资源/教程来自原魔趣吧历史资源转移,因发布历史久远,部分资源/教程可能已失效或无法在最新版程序中安装使用!DZ资源建议在Discuz3.4及以下版本使用,PHP版本建议5.6。资源仅提供做代码研究学习使用!
因改版,部分贴内链接将无法正常跳转,如链接失效或未正常跳转,请利用站内搜索功能搜索资源名称获取对应资源!