yii过滤xss代码

开发用的框架是yii1,遇到表单提交的内容,不可避免的需要防止一些不良代码。在yii中,安全考虑也是封装好的,下面来使用看我们是怎么过滤掉不良代码的。

需求:

1、表单提交内容,想安全的存入数据库

2、想安全的对数据进行输出

基本准则

无论是开发何种应用程序,我们都有两条基本的安全准则:

过滤输入

转义输出

解决方案:

1、针对需求1,yii1里我们可以采取save(false)的方式对数据原封不动的进行存入(在 Yii 中,大部分的数据查询是通过 Active Record 进行的,而其是完全使用 PDO 预处理语句执行 SQL 查询的。在PDO预处理中,sql注入是不可能发生的)

2、针对方案2,一般输出的时候CHtml::encode()一下即可,碰到带有html标签的内容(此处不想过滤html标签),可以采取如下方式:

$purifier = new CHtmlPurifier;
echo $purifier->purify($content);

说明一下为什么要用purify而不再使用CHtml::encode(),如果这里直接使用encode方式,我们含有html标签的内容就会直接输出在页面上了,注意是html标签直接显示出来了,明显不是我们想要的,yii1的purify呢正好帮我们解决这个问题。如果我们的内容中含有xss代码,也是会安全的将代码输出在页面上。

补充一点,如果是yii2,则需要按照下面进行处理:

如果你需要的是纯文本,你可以如下简单的转义:
<?= \yii\helpers\Html::encode($username) //yii2的处理方式?>

如果是 HTML ,我们可以用 HtmlPurifier 帮助类来执行:

<?= \yii\helpers\HtmlPurifier::process($description) //yii2的处理方式,注意不要同yii1混淆?>
注意: HtmlPurifier 帮助类的处理过程较为费时,建议增加缓存:

你可能感兴趣的:(过滤,CHtml,yii1,表单安全提交,CHtmlPurifier)