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 22 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP CURL获取返回值的方法
May 04 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
Zend Framework入门知识点小结
Mar 19 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
关于laravel后台模板laravel-admin select框的使用详解
Oct 03 PHP
Laravel配合jwt使用的方法实例
Oct 25 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文件中bom的PHP代码
2012/03/13 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python交互式图形编程实例(二)
2017/11/17 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
中学教师岗位职责
2013/11/26 职场文书
日语专业个人的求职信
2013/12/03 职场文书
中年人生感言
2014/02/04 职场文书
保险专业自荐信范文
2014/02/20 职场文书
专项法律服务方案
2014/06/11 职场文书
授权收款委托书
2014/09/23 职场文书
个人自查自纠材料
2014/10/14 职场文书