hanse
- hanse 2021-07-26 已签到连续签到1天,获得了5个金钱
- hanse 发表了说说yii2 还有哪些漏洞呢
- hanse 回答了问题 请问这样的sql 怎么处理 怎么写
用字符串方式不行么? 或者 addSelect
都yii2了还用 写
$str=stripslashes($str); $str=addslashes($str);
这些玩意儿???
- hanse 赞了回复
提醒大家不要被 此文 误导
都用了 yii 了,这些基本的攻击防护,框架 肯定考虑到了,只要 规范的写代码,yii下 不会有这些漏洞的另外:对于这些攻击的防护,不应该用 过滤 的方法,因为 这些基本的标点符号,还有 select update 这些很常用的单词 都是 正常交流 所必不可少的,粗暴的过滤掉 会改变 内容的含义
假设 你做的是一个讨论 正则表达式,html 及 sql 的论坛,按他这样过滤,也就 不用讨论啥了
我解释下吧,不然可能会让其他人误会
在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文件,如果上传成功,恭喜你,你的网站被别人搞下来了
@tying 这种遇到上传文件的,肯定不能完全靠model呀,要单独验证上传文件呀
- hanse 收藏了扩展阿里云短信验证码发送类