2018-11-27 16:47:14 1459次浏览 2条回答 0 悬赏 10 金钱

求教,如题。
如何对表单提交的数据进行过滤,避免注入攻击?

还是说:

/yii::$app->request->post();

或者

$model->load(/yii::$app->request->post());

已经对输入的字符串进行了过滤,不需要自己再动手了?

最佳答案

  • 刘师傅 发布于 2018-11-28 09:51 举报

    Yii2的过滤和验证正如你上面所写的load()方法那样,是建立在【场景】机制下的管理操作。

    $model = new User();
    $model->setScenario(User::SCENARIO_CREATE);//设置场景
    $model->load(Yii::$app->request->post()//根据场景填充数据到模型$model
    if ( $model->save()) { //根据场景进行过滤和验证,无误后入库
        return "success"; 
    } else {
        return $model->getErrors();
    }
    

    你可以花10分钟先读一篇这个文档,这里都是Yii2在model层进行输入验证和过滤起作用的地方:
    https://www.yiichina.com/doc/guide/2.0/input-validation

    sql注入的问题,我觉得php各个框架都差不多,因为PDO在底层已经解决了一大部分这方面的问题。
    各个框架的ORM都会有的。Yii2是AR,model;laravel就是eloquent类似。几乎不用担心SQL注入问题,除非自己坑自己。
    建议把数据库部分看看,也许心里会有点感觉吧!

    1 条回复
    回复于 2018-11-28 10:32 回复

    多了些。。。

  • 回答于 2018-11-27 17:18 举报

    我一般存储不做处理,在读取的时候做处理:

    <?= \yii\helpers\HtmlPurifier::process($model->content) ?>
    
    1 条回复
    回复于 2018-11-27 22:02 回复

    这个应该是防止跨站脚本攻击的吧,我想请教对于 sql 注入,yii 有哪些办法?或者机制?

您需要登录后才可以回答。登录 | 立即注册
sk811229
经理

sk811229

注册时间:2018-05-23
最后登录:2022-10-06
在线时长:16小时47分
  • 粉丝0
  • 金钱770
  • 威望10
  • 积分1030

热门问题