sql反注入

sql不止要能高效的执行,还需注意反sql注入攻击,下面分享几个反攻击的方法:

1、对用户输入的数据做有效性校验
2、不出现动态拼接sql
3、对每个功能使用各自数据库权限
4、不使用管理员权限登录
5、使用参数化的sql

<?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、付费专栏及课程。

余额充值