Yii下防守CSRF与XSS[二]

博客提及2019独角兽企业招聘Python工程师标准,重点讲述PHP在Yii框架下的特殊字符过滤问题。指出PHP内置函数不能过滤全部特殊字符,采用在Yii框架下新建Filter类、重写specialchar函数的方式来实现过滤,还可定义为public static调用以提高性能。

参考链接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-890.html

之前已经写过Yii下防守CSRF与XSS[一]

但是真正面临测试的时候,有一个需求是说希望过滤掉特殊的字符,比如:,;”<>%等。

Yii中的CHtml::purifier实际上只针对html的过滤,CHtml::encode本质上调用的是htmlspecialchars。

  • htmlspecialchars只转化<、>、 单引号、双引号、&符号

  • htmlentities会转化所有的html符号

可以看到PHP内置的函数都不能过滤全部的特殊字符,此时采用的方式是在Yii框架下,新建一个Filter类,自己重写specialchar函数,可以随心所欲的替换字符。为了提高性能,可以定义成public static调用。

class Filter
{
    public static function ReplaceSpecialChar($str)
    {
        $str=str_replace(":",$str);
        //TODO: replace other chars
        $str = htmlspecialchars($str);
        return $str;
    }
}

参考链接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-890.html

转载于:https://my.oschina.net/u/1470240/blog/1934442

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值