tying

tying

这家伙有点懒,还没写个性签名!

  • 财富值70
  • 威望值0
  • 总积分90

个人信息

  • parent::show();这个东西不是调用了吗?

  • 没看懂题目,也没看懂答案,这两个子查询在做什么呢?

  • 回复了 的回复

    我解释下吧,不然可能会让其他人误会
    在contorller中写上传增改数据内容都是这样写

    <?php
    public function actionName(){
       $model = new Tablename();
       if($model->load(Yii::$app->request->post()) && $model->validate()){
           .......
           //上传图片
           $model->pic= UploadedFile::getInstance($model, 'pic');
            $t = Yii::$app->user->identity->id."_".str_replace(".",'',uniqid('',true)).mt_rand(1000,9999);
            $xlsaddr = 'uploads/'. $t . '.' . $model->pic->extension;
            //将项目移动到$xlsaddr路径位置
            $model->pic->saveAs($xlsaddr);
            $model->save()
       }
       return $this->render("viewname",['model'=>$model])
    }
    ?>
    modle中的rule为下
    <?php
     public function rules()
        {
            return [
                [['pic', ], 'file','extensions' => 'jpg,png,jpeg,bmp,JPG,PNG,JPEG,BMP'],
            ];
        }
    ?>
    

    以上代码存在上传漏洞,即$model->validate(),这个验证对上传文件的验证为前端js验证,后台没有验证pic的文件上传。测试方法,为在浏览器设置禁用js(不会设置请百度),然后按照规则填写表单,在上传图片时,上传个php文件,如果上传成功,恭喜你,你的网站被别人搞下来了

    嗯,是这样的。我已经说明了我上面的代码是存在漏洞的。也有可能是我没有表述清楚吧

  • 声明:
    我发起这个话题的初衷
    一是为了让官方看看能不能通过更新版本源码修补下这个安全漏洞
    二是为了让不知道这个漏洞的程序能够看到,增加自己网站的安全性,要是您的防火墙和或者安装了什么硬件防护buff什么的,护非常牛逼,不需要理会安全漏洞,可以当这个话题时是个屁放了
    至于解决方案,方法千千万,大家可以相互讨论下,达到效果就好

  • 回复了 的回复

    你自定义一个验证规则,每次上传的时候在后台查查文件头是否有你需要的文件前缀

    嗯,也可以

  • 这话题只留三天,过后删掉,东西比较敏感

  • 我解释下吧,不然可能会让其他人误会
    在contorller中写上传增改数据内容都是这样写

    <?php
    public function actionName(){
       $model = new Tablename();
       if($model->load(Yii::$app->request->post()) && $model->validate()){
           .......
           //上传图片
           $model->pic= UploadedFile::getInstance($model, 'pic');
            $t = Yii::$app->user->identity->id."_".str_replace(".",'',uniqid('',true)).mt_rand(1000,9999);
            $xlsaddr = 'uploads/'. $t . '.' . $model->pic->extension;
            //将项目移动到$xlsaddr路径位置
            $model->pic->saveAs($xlsaddr);
            $model->save()
       }
       return $this->render("viewname",['model'=>$model])
    }
    ?>
    modle中的rule为下
    <?php
     public function rules()
        {
            return [
                [['pic', ], 'file','extensions' => 'jpg,png,jpeg,bmp,JPG,PNG,JPEG,BMP'],
            ];
        }
    ?>
    

    以上代码存在上传漏洞,即$model->validate(),这个验证对上传文件的验证为前端js验证,后台没有验证pic的文件上传。测试方法,为在浏览器设置禁用js(不会设置请百度),然后按照规则填写表单,在上传图片时,上传个php文件,如果上传成功,恭喜你,你的网站被别人搞下来了

  • 回复了 的回复

    是啊,要验证的,不验证的话啥都能传

    if ($model->validate())
    

    你试下好了,不想多做解释,版本是yii2.0.7

  • 回复了 的回复

    于是你在saveAs()的前面先行验证下就可以了:
    if ($model->validate())
    model...

    你试下好了,不想多做解释

  • 回复了 的回复

    于是你在saveAs()的前面先行验证下就可以了:
    if ($model->validate())
    model...

    你试下好了,不想多做解释

职场新人 等级规则
90/100
资料完整度
20/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

1

Ta的访客

5