这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下
 

本文实例讲述了简单实用的PHP防注入类。分享给大家供大家参考。具体如下:

PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全.

PHP防注入类代码如下:

复制代码 代码如下:
<?php

/**

 * 参数处理类

 * @author JasonWei

 */

class Params

{

    public $get = array();

 

    public $post = array();

 

    function __construct()

    {

 if (!emptyempty($_GET)) {

     foreach ($_GET as $key => $val) {

 if (is_numeric($val)) {

     $this->get[$key] = $this->getInt($val);

 } else {

     $this->get[$key] = $this->getStr($val);

 }

     }

 }

 if (!emptyempty($_POST)) {

     foreach ($_POST as $key => $val) {

 if (is_numeric($val)) {

     $this->post[$key] = $this->getInt($val);

 } else {

     $this->post[$key] = $this->getStr($val);

 }

     }

 }

    }

 

    public function getInt($number)

    {

 return intval($number);

    }

 

    public function getStr($string)

    {

 if (!get_magic_quotes_gpc()) {

     $string = addslashes($string);

 }

 return $string;

    }

 

    public function checkInject($string)

    {

 return eregi('select|insert|update|delete|/*|*|../|./|union|into|load_file|outfile', $string);

    }

 

    public function verifyId($id = null)

    {

 if (!$id || $this->checkInject($id) || !is_numeric($id)) {

     $id = false;

 } else {

     $id = intval($id);

 }

 return $id;

    }

}

?>

例子二,代码如下:

复制代码 代码如下:
<?php 

/*************************  

说明:    

判断传递的变量中是否含有非法字符    

   

如$_POST、$_GET    

功能:    

防注入    

*************************/    

//要过滤的非法字符     

$ArrFiltrate=array("'","or","and","union","where");     

//出错后要跳转的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('传递的信息中不得包含{',or,and,union}等非法字符请您把他们换成{‘,OR,AND,UNION}');</script>";     


if (emptyempty($StrGoUrl)){     

echo "<scriptlanguage='javascript'>history.go(-1);</script>";     

}else{     

echo "<scriptlanguage='javascript'>window.location='".$StrGoUrl."';</script>";     

}     

exit;     

}     

}     

/***************结束防止PHP注入*****************/    

?>

希望本文所述对大家的PHP程序设计有所帮助。

最新文章

  1. 偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例
  2. BAT常用脚本汇总
  3. 瀑布流js排列
  4. 元祖签约K2 BPM,引领绿色健康食品!
  5. !!!四种常见的 POST 提交数据方式(含application/json)
  6. Oracle配置详解
  7. My.Ioc 代码示例——注册项的注销和更新
  8. JDK源码学习--String篇(四) 终结篇
  9. PigCms 回复消息 &quot;域名授权错误! 您使用的微信平台或源码为盗版&quot;
  10. kgdb调试注意事项
  11. VS2010使整个过程说明了安装包
  12. nagios监控mysql主机,nginx,磁盘IO,网卡流量
  13. MyBatis之分页插件(PageHelper)工作原理
  14. laravel5.8笔记五:基类控制器和基类模型
  15. 百度富媒体展示允许自定义站点Logo/简介等
  16. CSDN博客QQ加群、微信
  17. SHU 414 - 字符串进制转换
  18. 使用seaborn制图(小提琴图)
  19. BZOJ5305 HAOI2018苹果树(概率期望+动态规划)
  20. Android -- uses-sdk:minSdkVersion 10 cannot be smaller than version L declared in library com.android.support:appcompat-v7:21.0.0-rc1

热门文章

  1. wpf配置菜单栏
  2. eclipse安装插件的方法(简单、ERMaster插件安装)
  3. Android NDK学习之第一个实例---端口扫描
  4. Linux_LVM_磁盘扩容
  5. hdu 5017 模拟退火
  6. sed命令给文本文件的每行的行首或者行尾添加文字
  7. oracle报错:ORA-28000: the account is locked
  8. iOS内存管理个人总结
  9. Django admin美化插件suit
  10. java编程思想-接口总结