Yii CActiveForm会自动清理用户输入吗?

Jac*_*ack 3 database sanitization insert-update yii

我有一个基本的Yii CActiveForm,我用它来收集用户的输入,然后通过默认的Yii ActiveRecord模型[/ edit]插入数据库[edit].像任何人一样,我想确保聪明的用户不会通过其中一个字段删除我的数据库.

问题是:Yii CActiveForm能否在恶意做任何事情之前自动清理输入?我找不到任何关于此的文件.不确定我是否需要花时间或它已经处理好了.

谢谢!

ldg*_*ldg 6

当你说"CActiveForm"时,我认为你的意思是使用Yii生成的模型和控制器.CActiveForm不会自动为您执行任何清理,但如果您使用Yii默认使用的ActiveRecord方法,它通常会根据每个字段的数据类型为您执行PDO绑定.如果使用createCommand()或其他方法创建自己的查询,则应定义自己的绑定.

如果要查看正在发生的事情,可以打开日志记录,例如,使用db命令生成文件,将其添加到组件 - >日志数组中的配置文件中:

'components'=>array(
 'log'=>array(
  'class'=>'CLogRouter',
    'routes'=>array(    
      array(
        'class'=>'CFileLogRoute',
        'levels'=>'trace, info',
        'categories'=>'system.db.*',
        'logFile'=>'db.log',
      ),
     ...
Run Code Online (Sandbox Code Playgroud)

如果你看到参数化的更新语句,你可以非常肯定他们正在使用PDO绑定,这将阻止大多数但不一定是所有的SQL攻击.(默认情况下,日志文件保存在"运行时"目录中,然后可以跟踪该目录.您也可以将其显示在网页底部或带有CWebLogRoute的 FireBug中,但如果是页面被重定向.)