私信发送成功
检测到您已登录开源中国,是否 一键登录码云
Watch Star Fork

Discuz! / DiscuzXPHPGVP

已合并
!111 修复 管理批量邀请链接的一系列问题

Discuz!:fix/inviteDiscuz!:master

Coxxs 创建于: 2017-08-12 03:07
  1. 修复管理批量邀请链接签名判断可被绕过的问题(http://coxxs.me/528)
  2. 修复管理员获得批量邀请链接后,失去邀请权限(如降用户组)后链接仍然有效的问题
  3. 修复不存在的 uid 生成邀请链接签名后,仍能注册的问题(防止漏洞修复前爆破出的链接可用于继续注册)

此 pr 不再改动 space_key 函数。

1157835_comsenzdiscuzDiscuz! 合并于 2017-08-21 10:52

2 条评论, 2 人参与 1182890_coxxs 428142_jzbar

428142_jzbar
建筑资源吧 2017-08-12 21:04

OK,已经修正

1182890_coxxs
Coxxs 2017-08-12 11:32

@建筑资源吧 不要在git@osc水贴,这里不是论坛 :persevere:

登录 后才可以发表评论

upload/source/function/function_member.php
@@ -184,14 +184,14 @@ function getinvite() { @@ -184,14 +184,14 @@ function getinvite() {
184 $appid = intval($cookies[2]); 184 $appid = intval($cookies[2]);
185 185
186 $invite_code = space_key($uid, $appid); 186 $invite_code = space_key($uid, $appid);
187 - if($code == $invite_code) {  
188 - $inviteprice = 0; 187 + if($code === $invite_code) {
189 $member = getuserbyuid($uid); 188 $member = getuserbyuid($uid);
190 if($member) { 189 if($member) {
191 $usergroup = C::t('common_usergroup')->fetch($member['groupid']); 190 $usergroup = C::t('common_usergroup')->fetch($member['groupid']);
192 - $inviteprice = $usergroup['inviteprice']; 191 + if(!$usergroup['allowinvite'] || $usergroup['inviteprice'] > 0) return array();
  192 + } else {
  193 + return array();
193 } 194 }
194 - if($inviteprice > 0) return array();  
195 $result['uid'] = $uid; 195 $result['uid'] = $uid;
196 $result['appid'] = $appid; 196 $result['appid'] = $appid;
197 } 197 }
upload/source/module/home/home_invite.php
@@ -66,12 +66,12 @@ if($id) { @@ -66,12 +66,12 @@ if($id) {
66 66
67 $id = 0; 67 $id = 0;
68 $invite_code = space_key($uid, $appid); 68 $invite_code = space_key($uid, $appid);
69 - if($_GET['c'] != $invite_code) { 69 + if($_GET['c'] !== $invite_code) {
70 showmessage('invite_code_error', '', array(), array('return' => true)); 70 showmessage('invite_code_error', '', array(), array('return' => true));
71 } 71 }
72 $inviteuser = getuserbyuid($uid); 72 $inviteuser = getuserbyuid($uid);
73 loadcache('usergroup_'.$inviteuser['groupid']); 73 loadcache('usergroup_'.$inviteuser['groupid']);
74 - if(!empty($_G['cache']['usergroup_'.$inviteuser['groupid']]) && $_G['cache']['usergroup_'.$inviteuser['groupid']]['inviteprice']) { 74 + if(!empty($_G['cache']['usergroup_'.$inviteuser['groupid']]) && (!$_G['cache']['usergroup_'.$inviteuser['groupid']]['allowinvite'] || $_G['cache']['usergroup_'.$inviteuser['groupid']]['inviteprice'])) {
75 showmessage('invite_code_error', '', array(), array('return' => true)); 75 showmessage('invite_code_error', '', array(), array('return' => true));
76 } 76 }
77 77
People Icon_close
Float_left Icon_close