php 批量過濾post,get敏感數據

ngww 9年前發布 | 1K 次閱讀 PHP

 
//php 批量過濾post,get敏感數據

if (get_magic_quotes_gpc()) {

$_GET = stripslashes_array($_GET);

$_POST = stripslashes_array($_POST);

}

function stripslashes_array(&$array) {

while(list($key,$var) = each($array)) {

if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {

if (is_string($var)) {

$array[$key] = stripslashes($var);

}

if (is_array($var)) {

$array[$key] = stripslashes_array($var);

}

}

}

return $array;

}

//過濾

function htmlencode($str){

if(empty($str)) return;

if($str=="") return $str;

$str=trim($str);

$str=str_replace("&","&",$str);

$str=str_replace(">",">",$str);

$str=str_replace("<","<",$str);

$str=str_replace(chr(32)," ",$str);

$str=str_replace(chr(9)," ",$str);

$str=str_replace(chr(9)," ",$str);

$str=str_replace(chr(34),"&",$str);

$str=str_replace(chr(39),"'",$str);

$str=str_replace(chr(13),"

",$str);

$str=str_replace("'","''",$str);

$str=str_replace("select","select",$str);

$str=str_replace("SCRIPT","SCRIPT",$str);

$str=str_replace("script","script",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace("modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cast","cas",$str);

return $str;

}

//解碼

function htmldecode($str){

if(empty($str)) return;

if($str=="") return $str;

$str=str_replace("select","select",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace("modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cas","cast",$str);

$str=str_replace("&","&",$str);

$str=str_replace(">",">",$str);

$str=str_replace("<","<",$str);

$str=str_replace(" ",chr(32),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace("&",chr(34),$str);

$str=str_replace("'",chr(39),$str);

$str=str_replace("

",chr(13),$str);

$str=str_replace("''","'",$str);

return $str;

}

// 函數:string_filter($string, $match_type=1)

// 功能:過濾非法內容

// 參數:

// $string 需要檢查的字符串

// $match_type 匹配類型,1為精確匹配, 2為模糊匹配,默認為1

//

// 返回:有非法內容返回True,無非法內容返回False

// 其他:非法關鍵字列表保存在txt文件里, 分為普通非法關鍵字和嚴重非法關鍵字兩個列表

// 作者:heiyeluren

// 時間:2006-1-18

//

//======================================================================

function lib_lawless_string_filter($string, $match_type=1)

{

//字符串空直接返回為非法

$string = trim($string);

if (empty($string))

{

return false;

}

//獲取重要關鍵字列表和普通關鍵字列表

$common_file = "common_list.txt"; //通用過濾關鍵字列表

$signify_file = "signify_list.txt"; //重要過濾關鍵字列表

//如果任何列表文件不存在直接返回false,否則把兩個文件列表讀取到兩個數組里

if (!file_exists($common_file) || !file_exists($signify_file))

{

return false;

}

$common_list = file($common_file);

$signify_list = file($signify_file);

//精確匹配

if ($match_type == 1)

{

$is_lawless = exact_match($string, $common_list);

}

//模糊匹配

if ($match_type == 2)

{

$is_lawless = blur_match($string, $common_list, $signify_list);

}

//判斷檢索結果數組中是否有數據,如果有,證明是非法的

if (is_array($is_lawless) && !empty($is_lawless))

{

return true;

}

else

{

return false;

}

}

//---------------------

// 精確匹配,為過濾服務

//---------------------

function exact_match($string, $common_list)

{

$string = trim($string);

$string = lib_replace_end_tag($string);

//檢索普通過濾關鍵字列表

foreach($common_list as $block)

{

$block = trim($block);

if (preg_match("/^$string$/i", $block))

{

$blist[] = $block;

}

}

//判斷有沒有過濾內容在數組里

if (!empty($blist))

{

return array_unique($blist);

}

return false;

}

//----------------------

// 模糊匹配,為過濾服務

//----------------------

function blur_match($string, $common_list, $signify_list)

{

$string = trim($string);

$s_len = strlen($string);

$string = lib_replace_end_tag($string);

//檢索普通過濾關鍵字列表

foreach($common_list as $block)

{

$block = trim($block);

if (preg_match("/^$string$/i", $block))

{

$blist[] = $block;

}

}

//檢索嚴重過濾關鍵字列表

foreach($signify_list as $block)

{

$block = trim($block);

if ($s_len>=strlen($block) && preg_match("/$block/i", $string))

{

$blist[] = $block;

}

}

//判斷有沒有過濾內容在數組里

if (!empty($blist))

{

return array_unique($blist);

}

return false;

}

//--------------------------

// 替換HTML尾標簽,為過濾服務

//--------------------------

function lib_replace_end_tag($str)

{

if (empty($str)) return false;

$str = htmlspecialchars($str);

$str = str_replace( '/', "", $str);

$str = str_replace("\\", "", $str);

$str = str_replace(">", "", $str);

$str = str_replace("<", "", $str);

$str = str_replace("", "", $str);

$str = str_replace("", "", $str);

$str=str_replace("select","select",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace("modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cas","cast",$str);

$str=str_replace("&","&",$str);

$str=str_replace(">",">",$str);

$str=str_replace("<","<",$str);

$str=str_replace(" ",chr(32),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace("&",chr(34),$str);

$str=str_replace("'",chr(39),$str);

$str=str_replace("

",chr(13),$str);

$str=str_replace("''","'",$str);

$str=str_replace("css","'",$str);

$str=str_replace("CSS","'",$str);

return $str;

//HTML標簽,可以作為擴展過濾

}

</pre>

 本文由用戶 ngww 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!