php过滤所有恶意字符(批量过滤post,get敏感数据)


Posted in PHP onMarch 18, 2014

函数代码:

//php 批量过滤post,get敏感数据 
if (get_magic_quotes_gpc()) { 
$_GET = stripslashes_array($_GET); 
$_POST = stripslashes_array($_POST); 
} 
function stripslashes_array(&$array) { 
while(list($key,$var) = each($array)) { 
if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) { 
if (is_string($var)) { 
$array[$key] = stripslashes($var); 
} 
if (is_array($var)) { 
$array[$key] = stripslashes_array($var); 
} 
} 
} 
return $array; 
} 
//过滤 
function htmlencode($str){ 
if(empty($str)) return; 
if($str=="") return $str; 
$str=trim($str); 
$str=str_replace("&","&",$str); 
$str=str_replace(">",">",$str); 
$str=str_replace("<","<",$str); 
$str=str_replace(chr(32)," ",$str); 
$str=str_replace(chr(9)," ",$str); 
$str=str_replace(chr(9)," ",$str); 
$str=str_replace(chr(34),"&",$str); 
$str=str_replace(chr(39),"'",$str); 
$str=str_replace(chr(13)," 
",$str); 
$str=str_replace("'","''",$str); 
$str=str_replace("select","select",$str); 
$str=str_replace("SCRIPT","SCRIPT",$str); 
$str=str_replace("script","script",$str); 
$str=str_replace("join","join",$str); 
$str=str_replace("union","union",$str); 
$str=str_replace("where","where",$str); 
$str=str_replace("insert","insert",$str); 
$str=str_replace("delete","delete",$str); 
$str=str_replace("update","update",$str); 
$str=str_replace("like","like",$str); 
$str=str_replace("drop","drop",$str); 
$str=str_replace("create","create",$str); 
$str=str_replace("modify","modify",$str); 
$str=str_replace("rename","rename",$str); 
$str=str_replace("alter","alter",$str); 
$str=str_replace("cast","cas",$str); 
return $str; 
} 
//解码 
function htmldecode($str){ 
if(empty($str)) return; 
if($str=="") return $str; 
$str=str_replace("select","select",$str); 
$str=str_replace("join","join",$str); 
$str=str_replace("union","union",$str); 
$str=str_replace("where","where",$str); 
$str=str_replace("insert","insert",$str); 
$str=str_replace("delete","delete",$str); 
$str=str_replace("update","update",$str); 
$str=str_replace("like","like",$str); 
$str=str_replace("drop","drop",$str); 
$str=str_replace("create","create",$str); 
$str=str_replace("modify","modify",$str); 
$str=str_replace("rename","rename",$str); 
$str=str_replace("alter","alter",$str); 
$str=str_replace("cas","cast",$str); 
$str=str_replace("&","&",$str); 
$str=str_replace(">",">",$str); 
$str=str_replace("<","<",$str); 
$str=str_replace(" ",chr(32),$str); 
$str=str_replace(" ",chr(9),$str); 
$str=str_replace(" ",chr(9),$str); 
$str=str_replace("&",chr(34),$str); 
$str=str_replace("'",chr(39),$str); 
$str=str_replace(" 
",chr(13),$str); 
$str=str_replace("''","'",$str); 
return $str; 
} 
// 函数:string_filter($string, $match_type=1) 
// 功能:过滤非法内容 
// 参数: 
// $string 需要检查的字符串 
// $match_type 匹配类型,1为精确匹配, 2为模糊匹配,默认为1 
// 
// 返回:有非法内容返回True,无非法内容返回False 
// 其他:非法关键字列表保存在txt文件里, 分为普通非法关键字和严重非法关键字两个列表 
// 作者:heiyeluren 
// 时间:2006-1-18 
// 
//====================================================================== 
function lib_lawless_string_filter($string, $match_type=1) 
{ 
//字符串空直接返回为非法 
$string = trim($string); 
if (empty($string)) 
{ 
return false; 
} 
//获取重要关键字列表和普通关键字列表 
$common_file = "common_list.txt"; //通用过滤关键字列表 
$signify_file = "signify_list.txt"; //重要过滤关键字列表 
//如果任何列表文件不存在直接返回false,否则把两个文件列表读取到两个数组里 
if (!file_exists($common_file) || !file_exists($signify_file)) 
{ 
return false; 
} 
$common_list = file($common_file); 
$signify_list = file($signify_file); 
//精确匹配 
if ($match_type == 1) 
{ 
$is_lawless = exact_match($string, $common_list); 
} 
//模糊匹配 
if ($match_type == 2) 
{ 
$is_lawless = blur_match($string, $common_list, $signify_list); 
} 
//判断检索结果数组中是否有数据,如果有,证明是非法的 
if (is_array($is_lawless) && !empty($is_lawless)) 
{ 
return true; 
} 
else
{ 
return false; 
} 
} 
//--------------------- 
// 精确匹配,为过滤服务 
//--------------------- 
function exact_match($string, $common_list) 
{ 
$string = trim($string); 
$string = lib_replace_end_tag($string); 
//检索普通过滤关键字列表 
foreach($common_list as $block) 
{ 
$block = trim($block); 
if (preg_match("/^$string$/i", $block)) 
{ 
$blist[] = $block; 
} 
} 
//判断有没有过滤内容在数组里 
if (!empty($blist)) 
{ 
return array_unique($blist); 
} 
return false; 
} 
//---------------------- 
// 模糊匹配,为过滤服务 
//---------------------- 
function blur_match($string, $common_list, $signify_list) 
{ 
$string = trim($string); 
$s_len = strlen($string); 
$string = lib_replace_end_tag($string); 
//检索普通过滤关键字列表 
foreach($common_list as $block) 
{ 
$block = trim($block); 
if (preg_match("/^$string$/i", $block)) 
{ 
$blist[] = $block; 
} 
} 
//检索严重过滤关键字列表 
foreach($signify_list as $block) 
{ 
$block = trim($block); 
if ($s_len>=strlen($block) && preg_match("/$block/i", $string)) 
{ 
$blist[] = $block; 
} 
} 
//判断有没有过滤内容在数组里 
if (!empty($blist)) 
{ 
return array_unique($blist); 
} 
return false; 
} 
//-------------------------- 
// 替换HTML尾标签,为过滤服务 
//-------------------------- 
function lib_replace_end_tag($str) 
{ 
if (empty($str)) return false; 
$str = htmlspecialchars($str); 
$str = str_replace( '/', "", $str); 
$str = str_replace("\\", "", $str); 
$str = str_replace(">", "", $str); 
$str = str_replace("<", "", $str); 
$str = str_replace("", "", $str); 
$str = str_replace("", "", $str); 
$str=str_replace("select","select",$str); 
$str=str_replace("join","join",$str); 
$str=str_replace("union","union",$str); 
$str=str_replace("where","where",$str); 
$str=str_replace("insert","insert",$str); 
$str=str_replace("delete","delete",$str); 
$str=str_replace("update","update",$str); 
$str=str_replace("like","like",$str); 
$str=str_replace("drop","drop",$str); 
$str=str_replace("create","create",$str); 
$str=str_replace("modify","modify",$str); 
$str=str_replace("rename","rename",$str); 
$str=str_replace("alter","alter",$str); 
$str=str_replace("cas","cast",$str); 
$str=str_replace("&","&",$str); 
$str=str_replace(">",">",$str); 
$str=str_replace("<","<",$str); 
$str=str_replace(" ",chr(32),$str); 
$str=str_replace(" ",chr(9),$str); 
$str=str_replace(" ",chr(9),$str); 
$str=str_replace("&",chr(34),$str); 
$str=str_replace("'",chr(39),$str); 
$str=str_replace(" 
",chr(13),$str); 
$str=str_replace("''","'",$str); 
$str=str_replace("css","'",$str); 
$str=str_replace("CSS","'",$str); 
return $str; 
//HTML标签,可以作为扩展过滤 
/* 
$tags = array("/html", "/head", "/body", "/div", "/span", "/DOCTYPE", "/title", "/link", "/meta", "/style", "/p", "/h1,", "/h2,", "/h3,", "/h4,", "/h5,", "/h6", "/strong", "/em", "/abbr", "/acronym", "/address", "/bdo", "/blockquote", "/cite", "/q", "/code", "/ins", "/del", "/dfn", "/kbd", "/pre", "/samp", "/var", "/br", "/a", "/img", "/area", "/map", "/object", "/param", "/ul", "/ol", "/li", "/dl", "/dt", "/dd", "/table", "/tr", "/td", "/th", "/tbody", "/thead", "/tfoot", "/col", "/colgroup", "/caption", "/form", "/input", "/textarea", "/select", "/option", "/optgroup", "/button", "/label", "/fieldset", "/legend", "/script", "/noscript", "/b", "/i", "/tt", "/sub", "/sup", "/big", "/small", "/hr" ); 
*/
}

代码:

引用是直接这样:

$xxx = htmlspecialchars($_POST['xxx']);

或者
$xxx = htmlspecialchars($_GET['xxx']);
PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
PHP编写RESTful接口
Feb 23 PHP
PHP中header用法小结
May 23 PHP
ThinkPHP实现分页功能
Apr 28 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 #PHP
PHP中获取时间的下一周下个月的方法
Mar 18 #PHP
php读取目录所有文件信息dir示例
Mar 18 #PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 #PHP
PHP读取文件内容后清空文件示例代码
Mar 18 #PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 #PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 #PHP
You might like
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
PHP钩子实现方法解析
2019/05/21 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
重命名批处理python脚本
2013/04/05 Python
Python实现提取文章摘要的方法
2015/04/21 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
Python读取csv文件实例解析
2019/12/30 Python
Python底层封装实现方法详解
2020/01/22 Python
python自动点赞功能的实现思路
2020/02/26 Python
python dict如何定义
2020/09/02 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
Java面试笔试题大全
2016/11/23 面试题
出纳岗位职责
2013/11/09 职场文书
村官工作鉴定评语
2014/01/27 职场文书
四年级数学教学反思
2014/02/02 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
春节晚会主持词
2014/03/24 职场文书
大学学生个人总结
2015/02/15 职场文书
物业管理交接协议书
2016/03/24 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript