网站地图    收藏   

主页 > 后端 > 网站安全 >

ShopEx收货地址可任意查看修改删除 - 网站安全

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] 普通会员登录网站后,通过恶意构造的URL可以实现对整个网站的收货地址查看、修改、和删除。造成用户敏感隐私泄漏和网站不必要的损失。详细说明:core/shop/controller/ctl.member.php文件...

普通会员登录网站后,通过恶意构造的URL可以实现对整个网站的收货地址查看、修改、和删除。
造成用户敏感隐私泄漏和网站不必要的损失。
详细说明:
core/shop/controller/ctl.member.php文件
 
//修改收货地址
    function modifyReceiver($addrId){
        $oMem = &$this->system->loadModel('member/member');
        if($aRet = $oMem->getAddrById($addrId)){
            $aRet['defOpt'] = array('0'=>__('否'), '1'=>__('是'));
            $this->pagedata = $aRet;
        }else{
            $this->system->error(404);
            exit;
        }
 
        $this->_output();
    }
 
    function saveRec(){
        $this->begin($this->system->mkUrl('member','modifyReceiver',array($_POST['addr_id'])));
        $oMem = &$this->system->loadModel('member/member');
        if($oMem->saveRec($_POST,$this->member['member_id'],$message)){
            $this->redirect('member','receiver');
        }
        trigger_error($message, E_USER_ERROR);
        $this->end(false,__('修改失败'),$this->system->mkUrl('member','modifyReceiver',array($_POST['addr_id'])));
    }
 
    //删除收货地址
    function delRec($addrId){
        $oMem = &$this->system->loadModel('member/member');
        if($oMem->delRec($addrId)){
            $this->redirect('member','receiver');
        }
        $this->_output();
    }
 
以上三个函数没有对所修改的地址所属用户ID进行判断,造成用户信息泄漏和安全隐患。
漏洞证明:
打开任意shopex4.85网站,注册会员登录后,
修改以下URL中的ID属性
/?member-21-modifyReceiver.html 可显示和修改其他用户的地址
/?member-21-delRec.html 可删除其他用户的地址
修复方案:
函数添加对用户ID的判断
//修改收货地址
    function modifyReceiver($addrId){
        $oMem = &$this->system->loadModel('member/member');
 
        if($aRet = $oMem->getAddrById($addrId)){
if($aRet['member_id']!=$this->member['member_id']){
$this->system->error(404);
            exit;
}else{
$aRet['defOpt'] = array('0'=>__('否'), '1'=>__('是'));
$this->pagedata = $aRet;
}
        }else{
            $this->system->error(404);
            exit;
        }
 
        $this->_output();
    }
 
    function saveRec(){
        $this->begin($this->system->mkUrl('member','modifyReceiver',array($_POST['addr_id'])));
        $oMem = &$this->system->loadModel('member/member');
        foreach($_POST as $ke=>$ve){
            $_POST[$ke] = strip_tags($ve);
        }
if($aRet = $oMem->getAddrById($_POST['addr_id'])){
 if($aRet['member_id']!=$this->member['member_id']){
$this->system->error(404);
            exit;
}
}
        if($oMem->saveRec($_POST,$this->member['member_id'],$message)){
            $this->redirect('member','receiver');
        }
        trigger_error($message, E_USER_ERROR);
        $this->end(false,__('修改失败'),$this->system->mkUrl('member','modifyReceiver',array($_POST['addr_id'])));
    }
 
    //删除收货地址 www.2cto.com
    function delRec($addrId){
        $oMem = &$this->system->loadModel('member/member');
if($aRet = $oMem->getAddrById($_POST['addr_id'])){
 if($aRet['member_id']!=$this->member['member_id']){
$this->system->error(404);
            exit;
}
}
        if($oMem->delRec($addrId)){
            $this->redirect('member','receiver');
        }
        $this->_output();
    }

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论