php注入类,简单实用的PHP防注入类实例

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

PHP防注入类代码如下:

复制代码

代码如下:

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;

} } ?>例子二,代码如下:

复制代码

代码如下:

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

if (emptyempty($StrGoUrl)){      echo

"history.go(-1);";

}else{      echo

"window.location='".$StrGoUrl."';";

}      exit;      }      }

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

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php class sqlsafe {   private $getfilter = "'|(and|or)\\b. ?(>|<|=|in|like)|\\/\\*. ?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION. ?SELECT|UPDATE. ?SET|INSERT\\s INTO. ?VALUES|(SELECT|DELETE). ?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s (TABLE|DATABASE)";   private $postfilter = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*. ?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION. ?SELECT|UPDATE. ?SET|INSERT\\s INTO. ?VALUES|(SELECT|DELETE). ?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s (TABLE|DATABASE)";   private $cookiefilter = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*. ?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION. ?SELECT|UPDATE. ?SET|INSERT\\s INTO. ?VALUES|(SELECT|DELETE). ?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s (TABLE|DATABASE)";   public function __construct() {     foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}     foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}     foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}   }   public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){     if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);     if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){       $this->writeslog($_SERVER["REMOTE_ADDR"]."    ".strftime("%Y-%m-%d %H:%M:%S")."    ".$_SERVER["PHP_SELF"]."    ".$_SERVER["REQUEST_METHOD"]."    ".$StrFiltKey."    ".$StrFiltValue);       showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1);     }   }   public function writeslog($log){     $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';     $ts = fopen($log_path,"a ");     fputs($ts,$log."\r\n");     fclose($ts);   } }本库首先构造函数参数,然后检查并写日志最后检查SQL注入日志。是一个很好用的SQL注入php
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值