Foreground

除了搜索,其他基本上都要登陆了之后才能使用,评论、友联、留言板,如果后台没有开启,基本上前台就是纯“静态”

$q = str_replace('%', '', new_html_special_chars(strip_tags(trim($_GET['q']))));

一行代码的过滤,trim()strip_tags()str_replace('%', '')的运用方式简直让我大开眼界了。。

comment

表单并没有什么过滤,但是在入库的时候用的是一样的过滤。

message board

留言板,提交之后要经过管理员审核才会显示出来。

member

在线投稿

正文和摘要黑名单过滤了一些标签

修改资料

修改头像

public function user_pic(){
    $memberinfo = $this->memberinfo;
    extract($memberinfo);
    if(isset($_POST['dosubmit'])){
        $filename = $_FILES['user_pic']['name'];
        if($filename == '') showmsg('请上传头像!');
        $upload = yzm_base::load_sys_class('upload');
        if($upload->uploadfile('user_pic')){
            $fileinfo = $upload->getnewfileinfo();
            $picname = $fileinfo['filepath'].$fileinfo['filename'];
            D('member_detail')->update(array('userpic'=>$picname),array('userid'=>$this->userid));
            $userpic = YZMPHP_PATH.ltrim($userpic, SITE_PATH);
            if(is_file($userpic)) @unlink($userpic);    //删除原来的头像
            showmsg('更新头像成功!','',1);
        }else{
            showmsg($upload->geterrormsg());
        }
    }

    include template('member', 'user_pic');
}

更改头像时,@unlink可以把原来的头像删掉,如果我们再提交请求的时候抓包改一下路径,即可构成任意文件删除,但是后台里面这个地方限制了文件后缀,所以危害瞬间咕咕咕。。。所以感觉前台那个unlink的任意文件删除,作者是知道的~

if(in_array(fileext($userpic), array('jpg', 'jpeg', 'png', 'gif')) && is_file($userpic)) @unlink($userpic); 

修改密码

修改密码没有校验,理论上只需要知道userid即可改别人的密码。
但是userid只有在登陆的时候被写进session,而且要逆向出来,几乎不可能。

发信息

不能给管理员发信息。。因为不在同一个表里

Background