首先我们来看看问题出现的文件源代码:
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就能删除整站中所有用户的收获地址。
我们修改
http://localhost/shopex/?member-21-delRec. html 中的21这个id号就可删除其他任意用户的地址。
先看看删除111111的收获地址url:
http://localhost/shopex/?member-5-delRec.html
再看看删除222222的收货地址url:
http://localhost/shopex/?member-6-delRec.html
现在我们删除111111的5号收货地址,然后截包,更改addrId为222222的6号收货地址:
最后222222的6号地址被成功删除。
修复方案: 具体就不说了,只要把core/shop/controller/ctl.member.php文件的删除收货地址的delRec函数按照修改收获地址函数modifyReceiver同样的方法,判断此addrId是否属于此用户:
if($aRet = $oMem->getAddrById($addrId, $this->member['member_id']))
查看更多关于ShopEx某处平衡权限及修复 - 网站安全 - 自学php的详细内容...