3

Yii 中的用户输入在哪里转义?

  1. CHtml::encode(strip_tags())在将它们保存到数据库之前我应该​​打电话吗?或者我应该在视图中对它们进行编码,之前echo

  2. 有没有办法在验证中自动编码输入文本?[a-zA-Z0-9]* 验证是否是在验证中过滤注入的最佳方法?

4

2 回答 2

3

对于第一个,这是我的个人意见,但我会按照你说的做:CHtml::encode(strip_tags())在保存数据之前。之前这样做的主要优点是,如果您从不同的介质(网站、api 等)获取数据,您将确保检索到的数据是安全的。

对于第二点,我不知道是否有自动编码输入文本的特定方法,但您可以使用模型中的beforeValidate()beforeSave()方法之一来做到这一点!

为了 yii 的安全性,我邀请您查看有关编写安全 yii 应用程序的 wiki

于 2012-12-28T00:08:51.583 回答
1

我用:

  $p = new CHtmlPurifier();
  $p->options = array(
    'URI.AllowedSchemes' => array(
      'http' => true,
      'https' => true,
  ));
  $search = CHtml::encode($p->purify($search));

将它放在一个函数中并随时调用它:)

于 2014-02-21T14:17:39.750 回答