php防sql注入等函數

discuz論壇的sql防注入函數

 
$magic_quotes_gpc = get_magic_quotes_gpc(); 
@extract(daddslashes($_COOKIE)); 
@extract(daddslashes($_POST)); 
@extract(daddslashes($_GET)); 
if(!$magic_quotes_gpc) { 
$_FILES = daddslashes($_FILES); 
} 


function daddslashes($string, $force = 0) { 
if(!$GLOBALS['magic_quotes_gpc'] || $force) { 
if(is_array($string)) { 
foreach($string as $key => $val) { 
$string[$key] = daddslashes($val, $force); 
} 
} else { 
$string = addslashes($string); 
} 
} 
return $string; 
} 

大家可以增強下面的代碼加以保護服務器的安全,PHP防止SQL注入安全函數十分重要! 

 
/* 
函數名稱:inject_check() 
函數作用:檢測提交的值是不是含有SQL注射的字符,防止注射,保護服務器安全 
參  數:$sql_str: 提交的變量 
返 回 值:返回檢測結果,ture or false 
*/ 
function inject_check($sql_str) { 
return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 進行過濾 
} 

/* 
函數名稱:verify_id() 
函數作用:校驗提交的ID類值是否合法 
參  數:$id: 提交的ID值 
返 回 值:返回處理後的ID 
*/ 
function verify_id($id=null) { 
if (!$id) { exit('沒有提交參數!'); } // 是否爲空判斷 
elseif (inject_check($id)) { exit('提交的參數非法!'); } // 注射判斷 
elseif (!is_numeric($id)) { exit('提交的參數非法!'); } // 數字判斷 
$id = intval($id); // 整型化 

return $id; 
} 

/* 
函數名稱:str_check() 
函數作用:對提交的字符串進行過濾 
參  數:$var: 要處理的字符串 
返 回 值:返回過濾後的字符串 
*/ 
function str_check( $str ) { 
if (!get_magic_quotes_gpc()) { // 判斷magic_quotes_gpc是否打開 
$str = addslashes($str); // 進行過濾 
} 
$str = str_replace("_", "\_", $str); // 把 '_'過濾掉 
$str = str_replace("%", "\%", $str); // 把 '%'過濾掉 

return $str; 
} 

/* 
函數名稱:post_check() 
函數作用:對提交的編輯內容進行處理 
參  數:$post: 要提交的內容 
返 回 值:$post: 返回過濾後的內容 
*/ 
function post_check($post) { 
if (!get_magic_quotes_gpc()) { // 判斷magic_quotes_gpc是否爲打開 
$post = addslashes($post); // 進行magic_quotes_gpc沒有打開的情況對提交數據的過濾 
} 
$post = str_replace("_", "\_", $post); // 把 '_'過濾掉 
$post = str_replace("%", "\%", $post); // 把 '%'過濾掉 
$post = nl2br($post); // 回車轉換 
$post = htmlspecialchars($post); // html標記轉換 

return $post; 
} 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章