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 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
测试您的 PHP 水平的题目
May 30 PHP
PHP 判断常量,变量和函数是否存在
Apr 26 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
php如何把表单内容提交到数据库
Jul 08 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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python logging模块学习笔记
2014/05/24 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
python 中的int()函数怎么用
2017/10/17 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python中的逆序遍历实例
2019/12/25 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
审计主管岗位职责
2014/01/31 职场文书
春节联欢会主持词
2014/03/24 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
高中化学教学反思
2016/02/22 职场文书
2019 入党申请书范文
2019/07/10 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL