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和ACCESS写聊天室(七)
Oct 09 PHP
php Try Catch异常测试
Mar 01 PHP
php adodb操作mysql数据库
Mar 19 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
PHP实现简单数字分页效果
Jul 26 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
php依赖注入知识点详解
Sep 23 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
php中使用url传递数组的方法
2015/02/11 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
uni-app实现点赞评论功能
2019/11/25 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
python迭代器的使用方法实例
2013/11/21 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
十佳护士先进事迹
2014/05/08 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
买房子个人收入证明
2014/10/12 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
工作经验交流材料
2014/12/30 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers