輸入值/表單提交參數過濾可以有效防止sql注入或非法攻擊,下面為大家介紹些不錯的方法,感興趣的不要錯過
輸入值/表單提交參數過濾,防止sql注入或非法攻擊的方法: 復制代碼 代碼如下: /** * 過濾sql與php文件操作的關鍵字 * @param string $string * @return string * @author zyb <[email protected]> */ private function filter_keyword( $string ) { $keyword = 'select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile'; $arr = explode( '|', $keyword ); $result = str_ireplace( $arr, '', $string ); return $result; } /** * 檢查輸入的數字是否合法,合法返回對應id,否則返回false * @param integer $id * @return mixed * @author zyb <[email protected]> */ protected function check_id( $id ) { $result = false; if ( $id !== '' && !is_null( $id ) ) { $var = $this->filter_keyword( $id ); // 過濾sql與php文件操作的關鍵字 if ( $var !== '' && !is_null( $var ) && is_numeric( $var ) ) { $result = intval( $var ); } } return $result; } /** * 檢查輸入的字符是否合法,合法返回對應id,否則返回false * @param string $string * @return mixed * @author zyb <[email protected]> */ protected function check_str( $string ) { $result = false; $var = $this->filter_keyword( $string ); // 過濾sql與php文件操作的關鍵字 if ( !empty( $var ) ) { if ( !get_magic_quotes_gpc() ) { // 判斷magic_quotes_gpc是否為打開 $var = addslashes( $string ); // 進行magic_quotes_gpc沒有打開的情況對提交數據的過濾 } //$var = str_replace( "_", "_", $var ); // 把 '_'過濾掉 $var = str_replace( "%", "%", $var ); // 把 '%'過濾掉 $var = nl2br( $var ); // 回車轉換 $var = htmlspecialchars( $var ); // html標記轉換 $result = $var; } return $result; }