Yii中用户输入的转义位置?
我应该在将CHtml::encode(strip_tags())
保存到db之前调用它吗?
或者我应该在echo
?
有没有办法在验证中自动编码输入文本? [a-zA-Z0-9] *的验证是否是在验证中过滤注射的最佳方法?
答案 0 :(得分:3)
对于第一个,这是我个人的意见,但在保存数据之前,我会像你说的那样:CHtml::encode(strip_tags())
。以前这样做的主要优点是,如果您从不同的媒介(网站,API,...)获取数据,您将确保检索到的数据是安全的。
对于第二点,我不知道是否有自动编码输入文本的特定方法,但您可以使用模型中的beforeValidate()
和beforeSave()
方法之一来执行此操作!
为了安全起见,我邀请您查看有关writing secure yii applications
的Wiki答案 1 :(得分:1)
我用:
$p = new CHtmlPurifier();
$p->options = array(
'URI.AllowedSchemes' => array(
'http' => true,
'https' => true,
));
$search = CHtml::encode($p->purify($search));
将其置于函数内并在以下情况下调用它:)