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 相关文章推荐
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 PHP
Laravel登录失败次数限制的实现方法
Aug 26 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
Three.js学习之网格
2016/08/10 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
python登录豆瓣并发帖的方法
2015/07/08 Python
Python 字典与字符串的互转实例
2017/01/13 Python
详谈python read readline readlines的区别
2017/09/22 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
元旦晚会邀请函
2014/02/01 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
热情服务标语
2014/10/07 职场文书
技术员个人工作总结
2015/03/03 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
班级联欢会主持词
2015/07/03 职场文书
工作会议简报
2015/07/20 职场文书
python实现过滤敏感词
2021/05/08 Python
V Rising 服务器搭建图文教程
2022/06/16 Servers