PHP防注入安全代码

 更新时间:2008年04月09日 23:05:01   作者:  
判断传递的变量中是否含有非法字符我们把以下代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。
简述:/*************************   
说明:   
判断传递的变量中是否含有非法字符   
如$_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;     
}
       

相关文章

  • 详解PHP使用OSS上传文件

    详解PHP使用OSS上传文件

    这篇文章主要介绍了PHP使用OSS上传文件,对OSS感兴趣的同学,可以参考并且实验一下
    2021-04-04
  • php页面缓存方法小结

    php页面缓存方法小结

    这篇文章主要介绍了php页面缓存方法,实例总结了常用的页面缓存函数的用法,并给出了一个完整的缓存实例,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 解析PHP计算页面执行时间的实现代码

    解析PHP计算页面执行时间的实现代码

    本篇文章是对PHP计算页面执行时间的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP中“简单工厂模式”实例代码讲解

    PHP中“简单工厂模式”实例代码讲解

    PHP中简单工厂模式实例代码,学习php类的朋友可以参考下
    2012-09-09
  • PHP设计模式的策略,适配器和观察者模式详解

    PHP设计模式的策略,适配器和观察者模式详解

    这篇文章主要为大家详细介绍了PHP设计模式的策略,适配器和观察者模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • PHP计划任务、定时执行任务的实现代码

    PHP计划任务、定时执行任务的实现代码

    PHP计划任务、定时执行任务的实现用到的函数 ignore_user_abort(),set_time_limit(0),sleep($interval) 此代码只要运行一次后关闭浏览器即可。
    2011-04-04
  • php,ajax实现分页

    php,ajax实现分页

    之前用php写好了个分页程序,今天试着结合ajax实现这个功能,成功了。哈哈,代码不难写,但写好之后测试发现出了,然后又调试了好段时间才正确。深感开发人员的时间大部分都是花在调试代码上的。
    2008-03-03
  • php ckeditor上传图片文件名乱码解决方法

    php ckeditor上传图片文件名乱码解决方法

    文件名乱码一般是中文导致的,因为ckeditor使用的是uft8编码如果我们页面使用的是gbk或gb2312就有可能出现乱码问题,解决办法只要对上传文件重命名即可,下面是如何修改程序代码的方法
    2013-11-11
  • php strnatcmp()函数的用法总结

    php strnatcmp()函数的用法总结

    这篇文章主要是对php中strnatcmp()函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • PHP封装的Twitter访问类实例

    PHP封装的Twitter访问类实例

    这篇文章主要介绍了PHP封装的Twitter访问类,通过curl调用实现针对Twitter的常用访问功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论