参考链接:
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
网友评论