一个简单的 PHP防注入类

 代码如下 复制代码

<?php
/**
 * 参数处理类
 * @author JasonWei
 */
class Params
{
    public $get = array();
 
    public $post = array();
 
    function __construct()
    {
if (!empty($_GET)) {
    foreach ($_GET as $key => $val) {
if (is_numeric($val)) {
    $this->get[$key] = $this->getInt($val);
} else {
    $this->get[$key] = $this->getStr($val);
}
    }
}
if (!empty($_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;
    }
}
?>

例子二

 代码如下 复制代码

 

<?    
/************************* 
说明:   
判断传递的变量中是否含有非法字符   
  
如$_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注入*****************/   
?>  

时间: 2024-10-28 16:13:22

一个简单的 PHP防注入类的相关文章

简单实用的PHP防注入类实例_php技巧

本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  * @author JasonWei  */ class Params {     public $get = array();       public $pos

php简单实现sql防注入的方法_php技巧

本文实例讲述了php简单实现sql防注入的方法.分享给大家供大家参考,具体如下: 这里没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码: $_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc

一个简单安全的PHP验证码类、PHP验证码_php实例

一,验证码示例 二,php验证码类,secoder.class.php <?php /** * 安全验证码 * * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码 * * @author 流水孟春 <cmpan(at)qq.com> * @link http://labs.yulans.cn/YL_Security_Secoder * @link http://wiki.yulans.cn/docs/yl/security/secoder */ class YL_Secu

【求助】如果要编写一个简单的SQL漏洞注入程序,需要学习哪方面的知识?

问题描述 我想学习编写一个简单的SQL漏洞注入程序,可惜完全没头绪,希望高手能指点迷津,最好能介绍点相关资料,语言也推荐下

一个简单安全的PHP验证码类、PHP验证码

一,验证码示例 二,php验证码类,secoder.class.php <?php /** * 安全验证码 * * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码 * * @author 流水孟春 <cmpan(at)qq.com> * @link http://labs.yulans.cn/YL_Security_Secoder * @link http://wiki.yulans.cn/docs/yl/security/secoder */ class YL_Secu

一个简单至极的PHP缓存类代码_php技巧

网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个.废话不多说,直接看代码吧!使用说明:1.实例化$cache = new Cache(); 2.设置缓存时间和缓存目录$cache = new Cache(60, '/any_other_path/'); 第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置. 默认情况下,缓存时间是 3600 秒,缓存目录是 cache/3.读取缓存$value = $cache->get('data_key'); 4

一个简单安全的PHP验证码类 附调用方法_php技巧

一.验证码示例 二.php验证码类,secoder.class.php <?php /** * 安全验证码 * * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码 * * @author 流水孟春 <cmpan(at)qq.com> * @link http://labs.yulans.cn/YL_Security_Secoder * @link http://wiki.yulans.cn/docs/yl/security/secoder */ class YL_Secu

一个简单的物料防错DEMO

前言   快2个月没写过博客了,就算是记流水账似的文章都没时间写,主要是太忙了:太多的bug要修复.太多由于bug引起的异常问题要解决.还有新的项目要开发,不忙怎么行呢?最近利用业余时间在鼓捣一个PDA的程序,主要是想用来通过wifi连接服务器,快速的扫描物料,进行备料.续料.卸料之类的操作,相信只要是在工厂接触过SMT机器的朋友一定知道这一块的流程.这个小程序也是费了很大的精力才慢慢有点儿起色,感谢帮助过我的朋友.  实现逻辑   主要业务在API里面实现,API里面将结果返回来,客户端通过A

一个简单的asp数据库操作类

数据|数据库 <%'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'数据库操作类'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'名称:Class_DBOperate'版本:0.2'作者:qihangnet'更新:2005年6月14日'作用:简化数据库操作的流程'授权:免费使用'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Class Class_DBOperate '************************