Yii和XSS,在哪里逃避数据?

时间:2012-12-27 23:06:11

标签: yii xss

Yii中用户输入的转义位置?

  1. 我应该在将CHtml::encode(strip_tags())保存到db之前调用它吗? 或者我应该在echo

  2. 之前在视图中对它们进行编码
  3. 有没有办法在验证中自动编码输入文本? [a-zA-Z0-9] *的验证是否是在验证中过滤注射的最佳方法?

2 个答案:

答案 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));

将其置于函数内并在以下情况下调用它:)