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的栏目导航程序
Oct 09 PHP
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
php中的比较运算符详解
Oct 28 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php命名空间学习详解
Feb 27 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP封装的完整分页类示例
Aug 21 PHP
PHP实现微信提现功能(微信商城)
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 8小时时间差的解决方法小结
2009/12/22 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Python里disconnect UDP套接字的方法
2015/04/23 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
window下eclipse安装python插件教程
2017/04/24 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python pandas生成时间列表
2019/06/29 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
大四自我鉴定
2014/02/08 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
催款函怎么写
2015/06/24 职场文书
男生贾里读书笔记
2015/06/30 职场文书
工作简报怎么写
2015/07/21 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers