我正在 yii 中构建一个数据库密集型应用程序。所以性能和安全性自然是一个值得关注的问题。除此之外,表单验证也是一个主要标准。为了安全起见,我计划对所有 Sql 查询使用参数绑定。对于验证,我想使用 Yii 提供的验证器,而不是推出我自己的 .我知道 CActiveRecord 的性能会受到影响。因此,我计划为所有表创建 Cmodel 类,在这些各自的模型中定义验证规则,并定义执行 SQL 查询以检索和插入数据的函数。我在网站上的所有数据收集主要是通过表单(大约95%),我应该使用 Cformmodel 吗?我不太明白 Cmodel 和 Cformmodel 之间的区别,使用这两者是否会对性能造成影响。
另外,为了防止 XSS 攻击,我想使用 HTML purify 包装器作为验证规则,因为我几乎到处都读到该包装器的性能很差,即使我使用它作为验证规则,它也会很差吗?即使我正在净化输入,我也应该使用 Chtml::Encode 显示输出文本吗?
我处理数据的粗略计划是:
$users= new Users() ; //Users is extending CModel , contains validation rules
$users=getdata(Yii->app->userid()) ;
if(isset('update'))
{
if($users->validate())
{$users->updatedata() ; }
}
$this->render('users','data'=>$users)
CFormModel继承自CModel,CModel只是一个通用的Model类,使用CFormModel没有性能差异,如果您不打算使用CActiveRecord,那么它更适合您的应用程序。
对于“执行 sql 查询的函数”,希望您指的是存储过程,否则不会有那么大的性能提升,即使如此,编写自己的 SQL 查询仅用于插入和检索单个模型也没有多大帮助。我的建议是你稍后关心性能。一旦你确实有需要改进的地方。
净化输入与编码不同,通过 HTML 净化,您可以消除有害的 html,以防止 XSS 或其他您不想允许的标签。但例如,字符串仍可以包含 ( ' )。 CHtml::encode 的作用是生成 HTML 等效项,以便您获得 html 实体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)