首先我们来看看问题出现的文件源代码:

core/shop/controller/ctl.member.php文件

......

第1026行

//删除收货地址 function delRec($addrId){ $oMem = &$this->system->loadModel('member/member'); if($oMem->delRec($addrId)){ $this->redirect('member','receiver'); } $this->_output(); }

......

上述函数delRec,没有对addrId进行判断,直接进行删除,这样修改addrId构造而已url就能删除整站中所有用户的收获地址。

我们修改

?member-21-delRec.html中的21这个id号就可删除其他任意用户的地址。

先看看删除111111的收获地址url:

?member-5-delRec.html

ShopEx某处平衡权限及修复

再看看删除222222的收货地址url:

?member-6-delRec.html

ShopEx某处平衡权限及修复

现在我们删除111111的5号收货地址,然后截包,更改addrId为222222的6号收货地址:

ShopEx某处平衡权限及修复

最后222222的6号地址被成功删除。

ShopEx某处平衡权限及修复


修复方案:

具体就不说了,只要把core/shop/controller/ctl.member.php文件的删除收货地址的delRec函数按照修改收获地址函数modifyReceiver同样的方法,判断此addrId是否属于此用户:

if($aRet = $oMem->getAddrById($addrId, $this->member['member_id']))