Jac*_*ack 3 database sanitization insert-update yii
我有一个基本的Yii CActiveForm,我用它来收集用户的输入,然后通过默认的Yii ActiveRecord模型[/ edit]插入数据库[edit].像任何人一样,我想确保聪明的用户不会通过其中一个字段删除我的数据库.
问题是:Yii CActiveForm能否在恶意做任何事情之前自动清理输入?我找不到任何关于此的文件.不确定我是否需要花时间或它已经处理好了.
谢谢!
当你说"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中,但如果是页面被重定向.)