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脚本的10个技巧(4)
Oct 09 PHP
PHP个人网站架设连环讲(一)
Oct 09 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 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/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
中学门卫岗位职责
2013/12/26 职场文书
三行辞职书范文
2015/02/26 职场文书
硕士学位申请报告
2015/05/15 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
Linux安装Docker详细教程
2022/07/07 Servers