/*----------------程式概述----------------------------------------------------- 程式名稱: sql_injection.php 編輯開始日期: 2012/01/16 程式功用: 用來防堵SQL Injection..等駭客攻擊 程式創始: Rex ----------------程式修改歷程---------------------------------------------------- [程式修改時間] [程式修改人] [修改的部份,約略描述] 2012/01/16 Rex 新增 -----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------- 函數名稱: sql_injection 函數功能: 防堵SQL Injection 函數引數: $as_value (String or Array) 傳入字串或陣列 $as_type (Array) 字串類型 1.int //數字 2.double //浮點數 3.string //純文字--清除特殊字串&HTML轉為實體 4.9zstring //字串--僅可輸入英數字 5.paswordstring //字串--僅可輸入英數字及特殊符號 $as_length (Int) 限制長度 (預設0不限制) 函數傳回值:$ls_value(String) 傳回處理後字串 函數創始: Rex 編輯開始時間: 2012/01/16 ------------------------修改記錄------------------------------------------------ [程式修改時間] [程式修改人] [修改的部份,約略描述] 2012/01/16 Rex 新增 -----------------------------------------------------------------------------*/ function sql_injection($as_value,$as_type,$as_length=0) { //判斷$as_value是否為陣列 if (is_array($as_value)) { //如果$as_value是陣列,那麼就以預設為字串處理它的每一個陣列值 foreach ($as_value as $key=>$value) { $as_value[$key] = replace_words(addslashes($value)); } } else { //如果$as_value不是陣列,那麼就僅處理一次 switch($as_type){ case 'int': //數字 $as_value = intval($as_value); break; case 'double': //浮點數 $as_value = doubleval($as_value); break; case 'string': //清除特殊字串&HTML轉為實體 //限制字串長度 if (!($as_length==0)){ $as_value = substr($as_value,0,$as_length); } //清除特殊字串 $as_value = replace_words($as_value); //在指定的預定字符前添加反斜線 $as_value = addslashes($as_value); //把一些預定的字符轉為HTML實體 $as_value = htmlspecialchars($as_value,ENT_QUOTES); //htmlspecialchars() 函數把一些預定的字符轉為HTML實體。 //預定的字符是: //& (和號) 轉為 & //" (隻引號) 轉為 " //' (單引號) 轉為 ' //< (小於) 轉為 < //> (大於) 轉為 > //html_entity_decode() //呈現時還原HTML break; case '9zstring': //僅可輸入英數字 //限制字串長度 if (!($as_length==0)){ $as_value = substr($as_value,0,$as_length); } //字串比對僅英文字 $as_value = words_match($as_value); break; case 'paswordstring': $as_value = preg_replace("''si", "", $as_value);//去掉javascrip break; default: //同string //限制字串長度 if (!($as_length==0)){ $as_value = substr($as_value,0,$as_length); } //清除特殊字串 $as_value = replace_words($as_value); //在指定的預定字符前添加反斜線 $as_value = addslashes($as_value); //把一些預定的字符轉為HTML實體 $as_value = htmlspecialchars($as_value,ENT_QUOTES); } //Update特殊字串及字串檢查 //$as_value = replace_words($as_value); //字串比對 //$as_value = words_match($as_value); } return $as_value; } /*----------------------------------------------------------------------------- 函數名稱: replace_words 函數功能: 防堵SQL Injection Update特殊字及HTML格式 函數引數: $as_words (String) 傳入字串 函數傳回值:$ls_words(String) 傳回處理後字串 函數創始: Rex 編輯開始時間: 2012/01/16 ------------------------修改記錄------------------------------------------------ [程式修改時間] [程式修改人] [修改的部份,約略描述] 2012/01/16 Rex 新增 -----------------------------------------------------------------------------*/ function replace_words($as_words) { //引號轉換為全型 $as_words = str_replace("'","’",$as_words); $as_words = str_replace('"','"',$as_words); $as_words = str_replace(";","﹔",$as_words); $as_words = str_replace(",","﹐",$as_words); //覆蓋特殊字元 $as_words = str_replace("%","",$as_words); $as_words = str_replace("--","",$as_words); $as_words = str_replace("/*","",$as_words); $as_words = str_replace(";","",$as_words); $as_words = str_replace(",","",$as_words); $as_words = str_replace("'","",$as_words); $as_words = str_replace('"',"",$as_words); $as_words = preg_replace("''si", "", $as_words);//去掉javascrip return $as_words; } /*----------------------------------------------------------------------------- 函數名稱: words_match 函數功能: 防堵SQL Injection 字串比對 函數引數: $as_match (String) 傳入字串 函數傳回值:$ls_match(String) 傳回處理後字串 函數創始: Rex 編輯開始時間: 2012/01/16 ------------------------修改記錄------------------------------------------------ [程式修改時間] [程式修改人] [修改的部份,約略描述] 2012/01/16 Rex 新增 -----------------------------------------------------------------------------*/ function words_match($as_match) { if(preg_match('#[^A-Za-z0-9./_-]#',$as_match)){ $loop_num = mb_strlen( $as_match, "utf-8"); for($x=0;$x<$loop_num;$x++){ if(preg_match('#[^A-Za-z0-9./_-]#',substr($as_match,$x,1))){ $as_match = str_replace(substr($as_match,$x,1),"",$as_match); $x--; $loop_num--; } //下面二行為了防止無限迴圈 if($x>$loop_num) exit; } //$as_match = ""; } return $as_match; } ?> function page_area($page,$pages,$link){ if(empty($page)){$page=1;} for($i=1;$i<=$pages;$i++){ if($page==$i){ $select_all .= ''; }else{ $select_all .= ''; } } $prepage=$page-1; $nextpage=$page+1; if($prepage<=0){$prepage=1;} if($nextpage>=$pages){$nextpage=$pages;} if($page != 1){ $page_fr= <<< page_front
| $page_conet_bef | 頁 |