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 上传功能实例代码
Apr 13 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
php中序列化与反序列化详解
Feb 13 PHP
关于PHP定时发送服务的解决办法
Apr 23 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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截取后台登陆密码的代码
2012/05/05 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
详解JS构造函数中this和return
2017/09/16 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
C语言面试题
2013/05/19 面试题
医药工作岗位求职信分享
2013/12/31 职场文书
委托书的格式
2014/08/01 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
2015年化验室工作总结
2015/04/23 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书