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 相关文章推荐
手把手教你使用DedeCms V3的在线采集图文教程
Apr 03 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
php字符串截取函数用法分析
Nov 25 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 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 xml文件操作实现代码(二)
2009/03/20 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
大学校园毕业自我鉴定
2014/01/15 职场文书
理发店策划方案
2014/06/05 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
创业计划书之养殖业
2019/10/11 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL