之前已经写过Yii下防守CSRF与XSS[一] 但是真正面临测试的时候,有一个需求是说希望过滤掉特殊的字符,比如:,:,”,<,>,%等。
Yii中的CHtml::purifier实际上只针对html的过滤,CHtml::encode本质上调用的是htmlspecialchars:
- htmlspecialchars只转化<、>、 单引号、双引号、&符号
- htmlentities会转化所有的html符号
可以看到PHP内置的函数都不能过滤全部的特殊字符,此时采用的方式是在Yii框架下,新建一个Filter类,自己重写specialchar函数,可以随心所欲的替换字符。为了提高性能,可以定义成public static调用。
|
|