欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP防注入安全代码

程序员文章站 2023-08-24 10:05:36
简述:/*************************    说明:    判断传递的变量中是否含有非法字符...
简述:/*************************   
说明:   
判断传递的变量中是否含有非法字符   
如$_post、$_get   
功能:防注入   
**************************/      

复制代码 代码如下:

<?php     

//要过滤的非法字符     
$arrfiltrate=array("'",";","union");     
//出错后要跳转的url,不填则默认前一页     
$strgourl="";     
//是否存在数组中的值     
function funstringexist($strfiltrate,$arrfiltrate){     
foreach ($arrfiltrate as $key=>$value){     
  if (eregi($value,$strfiltrate)){     
    return true;     
  }     
}     
return false;     
}     

//合并$_post 和 $_get     
if(function_exists(array_merge)){     
  $arrpostandget=array_merge($http_post_vars,$http_get_vars);     
}else{     
  foreach($http_post_vars as $key=>$value){     
    $arrpostandget[]=$value;     
  }     
  foreach($http_get_vars as $key=>$value){     
    $arrpostandget[]=$value;     
  }     
}     

//验证开始     
foreach($arrpostandget as $key=>$value){     
  if (funstringexist($value,$arrfiltrate)){     
    echo "<script language=\"javascript\">alert(\"非法字符\");</script>";     
    if (emptyempty($strgourl)){     
    echo "<script language=\"javascript\">history.go(-1);</script>";     
    }else{     
    echo "<script language=\"javascript\">window.location=\"".$strgourl."\";</script>";     
    }     
    exit;     
  }     
}     
?> 
    

保存为checkpostandget.php     
然后在每个php文件前加include(“checkpostandget.php“);即可     

方法2     

复制代码 代码如下:

/* 过滤所有get过来变量 */    
foreach ($_get as $get_key=>$get_var)     
{     
if (is_numeric($get_var)) {     
  $get[strtolower($get_key)] = get_int($get_var);     
} else {     
  $get[strtolower($get_key)] = get_str($get_var);     
}     
}     

/* 过滤所有post过来的变量 */    
foreach ($_post as $post_key=>$post_var)     
{     
if (is_numeric($post_var)) {     
  $post[strtolower($post_key)] = get_int($post_var);     
} else {     
  $post[strtolower($post_key)] = get_str($post_var);     
}     
}     

/* 过滤函数 */    
//整型过滤函数     
function get_int($number)     
{     
    return intval($number);     
}     
//字符串型过滤函数     
function get_str($string)     
{     
    if (!get_magic_quotes_gpc()) {     
return addslashes($string);     
    }     
    return $string;     
}