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简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
golang与PHP输出excel示例
Jul 22 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
PHP+JQUERY操作JSON实例
Mar 23 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
分享php多功能图片处理类
2016/05/15 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
python中将字典转换成其json字符串
2014/07/16 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
ORACLE第二个十问
2013/12/14 面试题
法学专业毕业生自荐信范文
2013/12/18 职场文书
文化宣传方案
2014/03/13 职场文书
起诉书范文
2015/05/20 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
vue router 动态路由清除方式
2022/05/25 Vue.js