PHP防注入安全代码

PHP代码
  1. 简述:/*************************  
  2. 说明:  
  3. 判断传递的变量中是否含有非法字符  
  4. 如$_POST、$_GET  
  5. 功能:防注入  
  6. **************************/    
  7.   
  8. <?php   
  9.   
  10. //要过滤的非法字符   
  11. $ArrFiltrate=array("'",";","union");   
  12. //出错后要跳转的url,不填则默认前一页   
  13. $StrGoUrl="";   
  14. //是否存在数组中的值   
  15. function FunStringExist($StrFiltrate,$ArrFiltrate){   
  16. foreach ($ArrFiltrate as $key=>$value){   
  17.   if (eregi($value,$StrFiltrate)){   
  18.     return true;   
  19.   }   
  20. }   
  21. return false;   
  22. }   
  23.   
  24. //合并$_POST 和 $_GET   
  25. if(function_exists(array_merge)){   
  26.   $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);   
  27. }else{   
  28.   foreach($HTTP_POST_VARS as $key=>$value){   
  29.     $ArrPostAndGet[]=$value;   
  30.   }   
  31.   foreach($HTTP_GET_VARS as $key=>$value){   
  32.     $ArrPostAndGet[]=$value;   
  33.   }   
  34. }   
  35.   
  36. //验证开始   
  37. foreach($ArrPostAndGet as $key=>$value){   
  38.   if (FunStringExist($value,$ArrFiltrate)){   
  39.     echo "<script language=\"javascript\">alert(\"非法字符\");</script>";   
  40.     if (emptyempty($StrGoUrl)){   
  41.     echo "<script language=\"javascript\">history.go(-1);</script>";   
  42.     }else{   
  43.     echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";   
  44.     }   
  45.     exit;   
  46.   }   
  47. }   
  48. ?>   
  49.   
  50. 保存为checkpostandget.php    
  51. 然后在每个php文件前加include(“checkpostandget.php“);即可   
  52.   
  53.   
  54.   
  55.   
  56. 方法2   
  57.   
  58. /* 过滤所有GET过来变量 */  
  59. foreach ($_GET as $get_key=>$get_var)   
  60. {   
  61. if (is_numeric($get_var)) {   
  62.   $get[strtolower($get_key)] = get_int($get_var);   
  63. else {   
  64.   $get[strtolower($get_key)] = get_str($get_var);   
  65. }   
  66. }   
  67.   
  68. /* 过滤所有POST过来的变量 */  
  69. foreach ($_POST as $post_key=>$post_var)   
  70. {   
  71. if (is_numeric($post_var)) {   
  72.   $post[strtolower($post_key)] = get_int($post_var);   
  73. else {   
  74.   $post[strtolower($post_key)] = get_str($post_var);   
  75. }   
  76. }   
  77.   
  78. /* 过滤函数 */  
  79. //整型过滤函数   
  80. function get_int($number)   
  81. {   
  82.     return intval($number);   
  83. }   
  84. //字符串型过滤函数   
  85. function get_str($string)   
  86. {   
  87.     if (!get_magic_quotes_gpc()) {   
  88. return addslashes($string);   
  89.     }   
  90.     return $string;   
  91. }   
  92.   
  93.   
  94. 我们把以上代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。    

转载于:https://www.cnblogs.com/fgpgy/archive/2007/12/03/3000078.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值