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 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
php email邮箱正则
Oct 08 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
PHP实现linux命令tail -f
Feb 22 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
PHP如何实现跨域
May 30 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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中Date获取时间不正确怎么办
2008/06/05 PHP
smarty简单入门实例
2014/11/28 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
javascript变量提升和闭包理解
2018/03/12 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
如何基于python操作excel并获取内容
2019/12/24 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
外贸业务员岗位职责
2013/11/24 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
工作会议简报
2015/07/20 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
python中的装饰器该如何使用
2021/06/18 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android