这篇文章主要介绍了简单实用的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程序设计有所帮助。

简单实用的PHP防注入类实例的更多相关文章

  1. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

  2. php简单实用的操作文件工具类(创建、移动、复制、删除)

    php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opend ...

  3. .net 过滤 sql防注入类,省地以后每次都要重新弄!

    /// <summary>    /// 过滤不安全的字符串    /// </summary>    /// <param name="Str"&g ...

  4. SQL防注入程序

    1.在Global.asax.cs中写入: protected void Application_BeginRequest(Object sender,EventArgs e){      SqlIn ...

  5. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  6. 简单实用的PHP验证码类

    一个简单实用的php验证码类,分享出来 ,供大家参考. 代码如下: <?php /** @ php 验证码类 @ http://www.jbxue.com */ Class code { var ...

  7. 简单的 php 防注入、防跨站 函数

    /** * 简单的 php 防注入.防跨站 函数 * @return String */ function fn_safe($str_string) { //直接剔除 $_arr_dangerChar ...

  8. Java注解的基本概念和原理及其简单实用

      一.注解的基本概念和原理及其简单实用 注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息提供了一种形式化得方法,使我们可以在稍后某个时刻方便的使用这些数据(通过解析 ...

  9. Struts2 源码分析——Result类实例

    本章简言 上一章笔者讲到关于DefaultActionInvocation类执行action的相关知识.我们清楚的知道在执行action类实例之后会相关处理返回的结果.而这章笔者将对处理结果相关的内容 ...

随机推荐

  1. 【poj2455】 Secret Milking Machine

    http://poj.org/problem?id=2455 (题目链接) 题意 给出一张n个点,p条边的无向图,需要从1号节点走到n号节点一共T次,每条边只能经过1次,问T次经过的最大的边最小是多少 ...

  2. CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

    catalog . 引言 . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch ...

  3. sublime配置java编译环境

    Windows下配置Sublime Text3的Java环境 字数507 阅读2301 评论2 喜欢2 Sublime Text3是一个比较好用的IDE.截图如下: java环境截图 下面就简单介绍下 ...

  4. Cacheable key collision with DefaultKeyGenerator

    The default is to use the hashcode of each parameter and create another (32-bit) hash code. Obviousl ...

  5. hihocoder #1052 基因工程

    传送门:基因工程 这道题拖了好久,一直没有清晰的思路. 当然,$K\le\frac{N}{2}$时,比较简单.下面我着重讲一下当$K>\frac{N}{2}$,即前$K$个字符与后$K$个字符有 ...

  6. 用css3实现各种图标效果(1)

    公共样式 应该说现在绝大多数公司的项目前端都是一团乱,不仅仅是js写的没有任何框架而言,css同样也是如此,导致项目如果要升级或者说有新的变更维护起来就特别困难. 最近领导决定花大时间整理一下css样 ...

  7. mysql数据库创建函数过程

    1.创建mysql数据库的存储过程,语句 2.选择执行创建的数据库存储过程即可

  8. C#获取C++中修改过的float数组(指针),dll

    C++中 struct rankPoint{ float sim; }; ]){ ; i < ; i++) prank[i].sim = ; ; i < ; i++) prank[i].s ...

  9. 自然语言0_nltk中文使用和学习资料汇总

    http://blog.csdn.net/huyoo/article/details/12188573 官方数据 http://www.nltk.org/book/ Natural Language ...

  10. 11 Clever Methods of Overfitting and how to avoid them

    11 Clever Methods of Overfitting and how to avoid them Overfitting is the bane of Data Science in th ...