如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
/************************* 说明: 判断传递的变量中是否含有非法字符 如$_POST、$_GET 功能: 防注入 *************************/ //你想要过滤的非法字符 $ArrFiltrate=array("'","or","and","union","where","&","join"); //出错后要跳转的url,不填则默认前一页 $StrGoUrl=""; //是否存在数组中的值 function FunStringExist($StrFiltrate,$ArrFiltrate){ foreach ($ArrFiltrate as $key=>$value){ //var_dump($value)exit(); if (@eregi($value,$StrFiltrate)){ //eregi(规则,被验证字符串) 不区分大小写的正则表达式匹配,该函数只支持php 4,5版本 return true; } } return false; } //合并$_POST 和 $_GET ,把它们的值都存到 $ArrPostAndGet[] 这个数组里 $HTTP_POST_VARS=$_POST; $HTTP_GET_VARS=$_GET; foreach($HTTP_POST_VARS as $key=>$value){ $ArrPostAndGet[]=$value; } foreach($HTTP_GET_VARS as $key=>$value){ $ArrPostAndGet[]=$value; } //var_dump($ArrPostAndGet);exit; //验证开始 foreach($ArrPostAndGet as $key=>$value){ if (FunStringExist($value,$ArrFiltrate)){ //返回 true 说明含有非法字符串 if (empty($StrGoUrl)){ //让它返回上一步,也可以让它退出登录,还可把本次操作加入日志(该用户非法操作) echo "<script language='javascript'>history.go(-1);</script>"; }else{ echo "<script language='javascript'>window.location='".$StrGoUrl."';</script>"; } exit; } else{ //不含有非法字符串,不做操作 $_GET=$_GET; $_POST=$_POST; } } /***************结束防止PHP注入*****************/ |