比較好用的PHP防注入漏洞過濾函式程式碼
阿新 • • 發佈:2019-02-11
<?php //PHP整站防注入程式,需要在公共檔案中require_once本檔案 //判斷magic_quotes_gpc狀態 if (@get_magic_quotes_gpc()) { $_GET = sec($_GET); $_POST = sec($_POST); $_COOKIE = sec($_COOKIE); $_FILES = sec($_FILES); } $_SERVER = sec($_SERVER); function sec(&$array) { //如果是陣列,遍歷陣列,遞迴呼叫 if (is_array($array)) { foreach ($array as $k => $v) { $array[$k] = sec($v); } } else if (is_string($array)) { //使用addslashes函式來處理 $array = addslashes($array); } else if (is_numeric($array)) { $array = intval($array); } return $array; } //整型過濾函式 function num_check($id) { if (!$id) { die('引數不能為空!'); } //是否為空的判斷 else if (inject_check($id)) { die('非法引數'); } //注入判斷 else if (!is_numetic($id)) { die('非法引數'); } //數字判斷 $id = intval($id); //整型化 return $id; } //字元過濾函式 function str_check($str) { if (inject_check($str)) { die('非法引數'); } //注入判斷 $str = htmlspecialchars($str); //轉換html return $str; } function search_check($str) { $str = str_replace("_", "\_", $str); //把"_"過濾掉 $str = str_replace("%", "\%", $str); //把"%"過濾掉 $str = htmlspecialchars($str); //轉換html return $str; } //表單過濾函式 function post_check($str, $min, $max) { if (isset($min) && strlen($str) < $min) { die('最少$min位元組'); } else if (isset($max) && strlen($str) > $max) { die('最多$max位元組'); } return stripslashes_array($str); } //防注入函式 function inject_check($sql_str) { return eregi('select|inert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str); // www.jb51.net 進行過濾,防注入 } function stripslashes_array(&$array) { if (is_array($array)) { foreach ($array as $k => $v) { $array[$k] = stripslashes_array($v); } } else if (is_string($array)) { $array = stripslashes($array); } return $array; } ?>