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 读取shell管道传输过来的内容
Mar 01 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
WordPress伪静态规则设置代码实例
Dec 10 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php 空格,换行,跳格使用说明
2009/12/18 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php 生成短网址原理及代码
2014/01/23 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
浅析vue数据绑定
2017/01/17 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
法律进企业活动方案
2014/03/04 职场文书
保研推荐信
2014/05/09 职场文书
人民调解协议书范本
2014/10/11 职场文书
《风筝》教学反思
2016/02/23 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript