Yii下防守CSRF與XSS[二]

參考連接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-890.htmlphp

以前已經寫過Yii下防守CSRF與XSS[一]html

可是真正面臨測試的時候,有一個需求是說但願過濾掉特殊的字符,好比:,;」<>%等。web

Yii中的CHtml::purifier實際上只針對html的過濾,CHtml::encode本質上調用的是htmlspecialchars。框架

  • htmlspecialchars只轉化<、>、 單引號、雙引號、&符號ide

  • 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測試

相關文章
相關標籤/搜索