限时 5折! 详情

yii过滤xss代码,防止sql注入

博主推荐:yii2实战式教程是一套简单易学、幽默风趣、干货多多、众人大赞的高质量教程,囊括 yii2基础入门、yii2高级进阶的很多知识点,可以说是迄今最好的yii2系列教程,真的不容错过哦~

实际开发中,涉及到的语言也好,框架也罢,web安全问题总是不可避免要考虑在内的,潜意识中的考虑。

意思就是说喃,有一条河,河很深,在没办法游过去的情况下你只能沿着河上唯一的一座桥走过去。

好啦,我们看看在yii框架的不同版本中是怎么处理xss攻击,sql注入等问题的。

啥啥啥,xss是啥,sql注入又是啥?哦我的天呐,不好意思,我也不知道,这个您问问小度小哥都行,随您。

通俗的说喃,就是两个原则问题:

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

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

有同学疑问来了,我的数据都安全的存到数据库了,都已经是安全的了,咋输出还要过滤呢?博主si是si犯浑,有毛病勒。

不着急,我们先来看看yii中是怎么处理我们所说的安全问题。

无论是yii还是yii2版本,数据查询,数据入库,我们都可以很好的用AR操作进行,这样就灰常简单的避免了sql注入问题,为啥就so easy的避免了呢,这是因为在AR的底层,其实对PDO进行的封装,所以喃,妈妈再也不用担心注入的问题了

有同学在嘀咕了,我们查询的sql很复杂的,用yii的AR操作不了,不写sql不行,你看着办吧。吓唬小孩呢,还有操作不了的,头一次见!

当然啦,在不涉及接收参数的情况下,要不要用原生sql您随意,但是涉及外参的情况下,您要是想用sql查询请尽量用占位去操作,不是不相信您自己个的"过滤",其实也是不敢相信,如果您坚持自己个写原生sql,您随意好吧

下面我们来看看问题2,数据安全的输出,这个在yii和yii2中还是有一丁点差别滴。

yii中,纯文本输出呢,很简单,我们对要输出的内容CHtml::encode()即可,别嚷嚷,我知道你想说啥,对于想输出html文本,可以采用如下方式:

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

放心,代码里面的js啥的统统会以文本的形式输出显示,那这里的xss问题我们也就可以放心了。

那要是yii2,又是怎样处理的喃?

<?= \yii\helpers\Html::encode($title) //纯文本 ?>
<?= \yii\helpers\HtmlPurifier::process($content) //html显示的文本 ?>

注意: HtmlPurifier 帮助类的处理过程较为费时,建议增加缓存

作者 白狼
本文版权归作者,欢迎转载,但未经作者同意必须保留 此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。