php中过滤非法字符的具体实现


Posted in PHP onOctober 29, 2013
<?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); 
} 
} 
/** 
* SQL注入日志 
*/ 
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); 
} 
} 
?>
PHP 相关文章推荐
用PHP实现Ftp用户的在线管理的代码
Mar 06 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
PHP访问Google Search API的方法
Mar 05 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
php实现json编码的方法
Jul 30 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
CodeIgniter常用知识点小结
May 26 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
浅谈PHP封装CURL
Mar 06 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 #PHP
PHP页面中文乱码分析
Oct 29 #PHP
php四种基础算法代码实例
Oct 29 #PHP
教你如何使用php session
Oct 28 #PHP
php字符编码转换之gb2312转为utf8
Oct 28 #PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 #PHP
php header功能的使用
Oct 28 #PHP
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
各种咖啡的英文名子是什么
2021/03/03 新手入门
php实现无限级分类(递归方法)
2015/08/06 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
python 图片验证码代码
2008/12/07 Python
python实现博客文章爬虫示例
2014/02/26 Python
Python数据结构之图的应用示例
2018/05/11 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
初二生物教学反思
2014/02/03 职场文书
新年主持词
2014/03/27 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
护士2014年终工作总结
2014/11/11 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
校运会广播稿
2015/08/19 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
Python一些基本的图像操作和处理总结
2021/06/23 Python
Python进行区间取值案例讲解
2021/08/02 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers