Closed kl521516 closed 5 years ago
那是非法访问,比如抓取机器人访问了你的这个地址
我们是ract写的单页面应用,这种页面蜘蛛无法抓取和得知访问链接的,通过nginx日志检索只有少数蜘蛛访问了/根目录,感觉是其它问题
@kl521516 总之,请求里没有带 code 所致
请求里有没有带 code ,我用easywechat框架怎么判断,或者怎么修改一下代码,就可以带上code
你直接判断 url 里的 query 有没有 code ,没有就不走微信接口就好了
xiaolin notifications@github.com于2019年9月4日 周三下午4:00写道:
请求里有没有带 code ,我用easywechat框架怎么判断,或者怎么修改一下代码,就可以带上code
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYHRYTANFKRMWYGNPYTQH5TJVA5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD52W3YY#issuecomment-527789539, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYFR4WBEXXWNBC36YITQH5TJVANCNFSM4ITM3RXQ .
我们登录用的是Socialite,用户分享那一块用的是easywechat,会不会他们两同时使用,产生冲突了
用户分享?和 socialite 没有关系吧?
xiaolin notifications@github.com于2019年9月5日 周四上午10:15写道:
我们登录用的是Socialite,用户分享那一块用的是easywechat,会不会他们两同时使用,产生冲突了
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYGV5JJMX7KRW224WRDQIBTT3A5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD55S2MA#issuecomment-528166192, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYDMDCOFK5VZSGRJ7EDQIBTT3ANCNFSM4ITM3RXQ .
Socialite的微信登录、easywechat微信分享或者获取微信信息,同一个appid和appsecret,都是先获取accessToken,会不会因为这个冲突了
Socialite 是哪个包?overtrue/socialite 的话其实已经包含在 easywechat 了,你没必要单独引入来用。
xiaolin notifications@github.com于2019年9月5日 周四上午11:37写道:
Socialite的微信登录、easywechat微信分享或者获取微信信息,同一个appid和appsecret,都是先获取accessToken,会不会因为这个冲突了
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYES2XZA46AN7GTMWDDQIB5IXA5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD55W3KQ#issuecomment-528182698, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYGJHJDCKX6HVPESWV3QIB5IXANCNFSM4ITM3RXQ .
微信登录和QQ登录我都用的Socialite
Socialite 不是一个包名,麻烦告诉我你用的是哪一个,laravel/socialite 这样的格式才叫包名,有很多同名的包……
xiaolin notifications@github.com于2019年9月5日 周四上午11:44写道:
微信登录和QQ登录我都用的Socialite
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYDLIMWP2LDKM4IKSYDQIB6CZA5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD55XETI#issuecomment-528183885, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYCEFX3ES5WSBG4GYFTQIB6CZANCNFSM4ITM3RXQ .
https://github.com/overtrue/socialite 用的这个
GitHub:octocat: Socialite is an OAuth2 Authentication tool. It is inspired by laravel/socialite, you can easily use it without Laravel. - overtrue/socialite
那你没必要单独使用的,微信登录已经在内置 SDK 了
xiaolin notifications@github.com于2019年9月5日 周四下午1:15写道:
https://github.com/overtrue/socialite 用的这个
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYFJSHK3QGUXXWJU6MTQICIXDA5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD553F3Q#issuecomment-528200430, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYETL5NOQLCQW3AK5WTQICIXDANCNFSM4ITM3RXQ .
微信登录我已经换成easywechat了,另外网站robots.txt也屏蔽了所有蜘蛛的抓取,但是日志里还是输出这个错误
不排除其他情况啊,别人也没办法帮你检查是什么情况。
你判断请求没有 code,然后你记录下请求内容等等,分析一下不就知道了?
if ( ! $request->has('code')) {
// 记录请求信息
return;
}
code被使用 [ 2019-09-09T05:51:33+08:00 ] 223.88.74.195 GET xxx.com/callback?code=071GMAvs0w6TFf10l4ts0qoXvs0GMAvE&state=dbd08a4deb382a2f92e76669b0b3522b [ error ] [-1]Authorize Failed: {"errcode":40163,"errmsg":"code been used, hints: [ req_id: zceeZRLnRa-e6aG_a ]"}
code缺失 [ 2019-09-09T09:16:39+08:00 ] 116.249.89.146 GET xxx.com/callback [ error ] [-1]Authorize Failed: {"errcode":41008,"errmsg":"missing code, hints: [ req_id: HeeezqLnRa-S.yNUa ]"}
有两种情况,不是有没有code的问题,我和同事用微信开发者工具、手机微信反复测试都无法还原这个问题,导致我们无从下手,能否给我们一些检查思路
看一下无 code 时的 user-agent
//如果请求参数中存在code,就记录日志 if (Request::has("code")) { Log::record(Request::header()['user-agent'],'error'); }
出来了一堆日志,可是我不知道输出的user-agent有什么用
[ 2019-09-09T17:05:58+08:00 ] 117.136.40.16 GET xxx.com/oauth_callback?code=011PIxBz0EXI8d1pHSBz0NrpBz0PIxBr&state=1e0f0f8b557214f5e80adbb30383196b [ error ] Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 MicroMessenger/7.0.2(0x17000222) NetType/4G Language/zh_CN
注意审题……🌚
下面是code been used的日志,无code的user-agent日志我重新记录一下
missing code的user-agent日志看着正常
没有 code 就跳过授权就好了
为什么会出现没有code的情况,用户只有授权了都会跳转到oauth_callback这个请求上
现在是两个问题,一个是code been used,另一个是missing code,为什么只有一部分人会出现这种情况
@kl521516 只有两种原因:
别忘记了除了用户还有黑客存在。
1、我们分别用了多个手机测试点击返回,都没有出现这个错误日志
2、oauth_callback只是去获取用户的头像和昵称,攻击的必要不大;普通用户也无法知道这个链接;日志中显示的ip和时间也没有规律,看起来像是正常的用户访问
3、我们一个项目中因为业务需求,同时用了三个域名和三个公众号的appid和secret,会不会是easywechat框架只考虑一个域名和一个appid的情况下对access_token的缓存,从而导致其它appid调用微信接口时出了问题
//根据域名进行微信公众号配置 if (Request::domain()=='https://aaa.com' || Request::domain()=='http://aaa.com') { $this->config_wechat = [ 'app_id' => Config::get('aaa.app_id'), 'secret' => Config::get('aaa.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; } elseif (Request::domain()=='https://bbb.com' || Request::domain()=='http://bbb.com') { $this->config_wechat = [ 'app_id' => Config::get('bbb.app_id'), 'secret' => Config::get('bbb.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; } elseif (Request::domain()=='https://ccc.com' || Request::domain()=='http://ccc.com') { $this->config_wechat = [ 'app_id' => Config::get('ccc.app_id'), 'secret' => Config::get('ccc.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; }
$app = Factory::officialAccount($this->config_wechat);
xiaolin notifications@github.com于2019年9月11日 周三下午1:26写道:
1、我们分别用了多个手机测试点击返回,都没有出现这个错误日志
2、oauth_callback只是去获取用户的头像和昵称,攻击的必要不大;普通用户也无法知道这个链接;日志中显示的ip和时间也没有规律,看起来像是正常的用户访问
3、我们一个项目中因为业务需求,同时用了三个域名和三个公众号的appid和secret,会不会是easywechat框架只考虑一个域名和一个appid的情况下对access_token的缓存,从而导致其它appid调用微信接口时出了问题
//根据域名进行微信公众号配置 if (Request::domain()=='https://aaa.com' || Request::domain()==' http://aaa.com') { $this->config_wechat = [ 'app_id' => Config::get('aaa.app_id'), 'secret' => Config::get('aaa.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; } elseif (Request::domain()=='https://bbb.com' || Request::domain()==' http://bbb.com') { $this->config_wechat = [ 'app_id' => Config::get('bbb.app_id'), 'secret' => Config::get('bbb.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; } elseif (Request::domain()=='https://ccc.com' || Request::domain()==' http://ccc.com') { $this->config_wechat = [ 'app_id' => Config::get('ccc.app_id'), 'secret' => Config::get('ccc.secret'), 'oauth' => [ 'scopes' => ['snsapi_base'], 'callback' => '/oauth_callback', ], ]; }
$app = Factory::officialAccount($this->config_wechat);
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/overtrue/wechat/issues/1677?email_source=notifications&email_token=AALHOYHOUV5X4Y4CCW6KRULQJB6QDA5CNFSM4ITM3RX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6NJPJQ#issuecomment-530225062, or mute the thread https://github.com/notifications/unsubscribe-auth/AALHOYAJ42OJ6XTFT7VT5TLQJB6QDANCNFSM4ITM3RXQ .
我用的环境
问题及现象
//授权跳转 public function get_openid(){
}
//跳转获取openid public function oauth_callback(){
}
偶尔会出现这个问题,测试很多次都是好的,但错误日志里每天都十多条关于这个的错误信息
域名了备了案,也在公众号设置了域名白名单
[ error ] [-1]Authorize Failed: {"errcode":41008,"errmsg":"missing code, hints: [ req_id: jCbezQaLRa-yh_Wxa ]"}
https://yike.io/ 另外一刻社区上无法提交问题,报错信息:This action is unauthorized.