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 相关文章推荐
编译问题
Oct 09 PHP
php创建多级目录代码
Jun 05 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php实现四舍五入的方法小结
Mar 03 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
实例讲解php实现多线程
Jan 27 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
聊天室php&amp;mysql(六)
2006/10/09 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
进一步理解Python中的函数编程
2015/04/13 Python
基于Python实现文件大小输出
2016/01/11 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
Django REST framework 视图和路由详解
2019/07/19 Python
django admin 添加自定义链接方式
2020/03/11 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
Django-imagekit的使用详解
2020/07/06 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
三严三实对照检查材料
2014/08/25 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python