CI框架安全過濾函數(shù)示例
2019-09-23 10:56WhoAmMe PHP教程
這篇文章主要介紹了CI框架安全過濾函數(shù),結(jié)合實例形式分析了CodeIgniter框架去空、防止XSS的函數(shù)定義與使用方法,并附帶了原生PHP進(jìn)行各種常見安全過濾相關(guān)操作技巧,需要的朋友可以參考下
本文實例講述了CI框架安全過濾函數(shù)。分享給大家供大家參考,具體如下:
1、CI框架版本:
07 | final protected function html_trim( $param = '' ) |
09 | if ( is_array ( $param ) && ! empty ( $param )){ |
12 | if ( is_string ( $param )){ |
13 | return htmlspecialchars(trim( $param )); |
15 | if ( is_numeric ( $param )) |
使用方式為:
1 | $this ->html_trim( $this ->input->post( 'refer_url' ,TRUE)); |
由于第二個參數(shù)為TRUE,默認(rèn)已經(jīng)進(jìn)行了xss過濾
2、原生PHP版本
006 | function fliter_script( $value ) { |
007 | $value = preg_replace( "/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i" , "&111n\\2" , $value ); |
008 | $value = preg_replace( "/(.*?)<\/script>/si" , "" , $value ); |
009 | $value = preg_replace( "/(.*?)<\/iframe>/si" , "" , $value ); |
010 | $value = preg_replace ( "//iesU" , '' , $value ); |
018 | function fliter_html( $value ) { |
019 | if (function_exists( 'htmlspecialchars' )) return htmlspecialchars( $value ); |
020 | return str_replace ( array ( "&" , '"' , " '", "<", ">"), array("&", "\"", "' ", "<" , ">" ), $value ); |
027 | function fliter_sql( $value ) { |
028 | $sql = array ( "select" , 'insert' , "update" , "delete" , "\'" , "\/\*" , |
029 | "\.\.\/" , "\.\/" , "union" , "into" , "load_file" , "outfile" ); |
030 | $sql_re = array ( "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" ); |
031 | return str_replace ( $sql , $sql_re , $value ); |
038 | function fliter_escape( $value ) { |
039 | if ( is_array ( $value )) { |
040 | foreach ( $value as $k => $v ) { |
041 | $value [ $k ] = self::fliter_str( $v ); |
044 | $value = self::fliter_str( $value ); |
053 | function fliter_str( $value ) { |
054 | $badstr = array ( "\0" , "%00" , "\r" , '&' , ' ' , '"' , "' ", " < ", " > ", " ", " %3C ", " %3E"); |
055 | $newstr = array ( '' , '' , '' , '&' , ' ' , '"' , '' ', "< ", " > ", " ", " < ", " >"); |
056 | $value = str_replace ( $badstr , $newstr , $value ); |
057 | $value = preg_replace( '/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/' , '&\\1' , $value ); |
065 | function filter_dir( $fileName ) { |
066 | $tmpname = strtolower ( $fileName ); |
067 | $temp = array ( ':/' , "\0" , ".." ); |
068 | if ( str_replace ( $temp , '' , $tmpname ) !== $tmpname ) { |
078 | public function filter_path( $path ) { |
079 | $path = str_replace ( array ( "'" ,'# ',' = ',' ` ',' $ ',' % ',' & ',' ; '), ' ', $path ); |
080 | return rtrim(preg_replace( '/(\/){2,}|(\\\){1,}/' , '/' , $path ), '/' ); |
087 | public function filter_phptag( $string ) { |
088 | return str_replace ( array ( '' ), array ( '<?' , '?>' ), $string ); |
095 | public function str_out( $value ) { |
096 | $badstr = array ( "<" , ">" , "%3C" , "%3E" ); |
097 | $newstr = array ( "<" , ">" , "<" , ">" ); |
098 | $value = str_replace ( $newstr , $badstr , $value ); |
099 | return stripslashes ( $value ); |
希望本文所述對大家基于CodeIgniter框架的PHP程序設(shè)計有所幫助。