php 安全过滤函数代码


Posted in PHP onMay 07, 2011
//安全过滤输入[jb] 

function check_str($string, $isurl = false) 

{ 

$string = preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string); 

$string = str_replace(array("\0","%00","\r"),'',$string); 

empty($isurl) && $string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string); 

$string = str_replace(array("%3C",'<'),'<',$string); 

$string = str_replace(array("%3E",'>'),'>',$string); 

$string = str_replace(array('"',"'","\t",' '),array('“','‘',' ',' '),$string); 

return trim($string); 

}

下面是为大家整理的一些过滤函数:

/**

* 安全过滤类-过滤javascript,css,iframes,object等不安全参数 过滤级别高

*  Controller中使用方法:$this->controller->fliter_script($value)

* @param  string $value 需要过滤的值

* @return string

*/

function fliter_script($value) {

$value = preg_replace("/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i","&111n\\2",$value);

$value = preg_replace("/(.*?)<\/script>/si","",$value);

$value = preg_replace("/(.*?)<\/iframe>/si","",$value);

$value = preg_replace ("//iesU", '', $value);

return $value;

}
/**

* 安全过滤类-过滤HTML标签

*  Controller中使用方法:$this->controller->fliter_html($value)

* @param  string $value 需要过滤的值

* @return string

*/

function fliter_html($value) {

if (function_exists('htmlspecialchars')) return htmlspecialchars($value);

return str_replace(array("&", '"', "'", "<", ">"), array("&", "\"", "'", "<", ">"), $value);

}
/**

* 安全过滤类-对进入的数据加下划线 防止SQL注入

*  Controller中使用方法:$this->controller->fliter_sql($value)

* @param  string $value 需要过滤的值

* @return string

*/

function fliter_sql($value) {

$sql = array("select", 'insert', "update", "delete", "\'", "\/\*", 

     "\.\.\/", "\.\/", "union", "into", "load_file", "outfile");

$sql_re = array("","","","","","","","","","","","");

return str_replace($sql, $sql_re, $value);

}
/**

* 安全过滤类-通用数据过滤

*  Controller中使用方法:$this->controller->fliter_escape($value)

* @param string $value 需要过滤的变量

* @return string|array

*/

function fliter_escape($value) {

if (is_array($value)) {

  foreach ($value as $k => $v) {

   $value[$k] = self::fliter_str($v);

  }

} else {

  $value = self::fliter_str($value);

}

return $value;

}
/**

* 安全过滤类-字符串过滤 过滤特殊有危害字符

*  Controller中使用方法:$this->controller->fliter_str($value)

* @param  string $value 需要过滤的值

* @return string

*/

function fliter_str($value) {

$badstr = array("\0", "%00", "\r", '&', ' ', '"', "'", "<", ">", "   ", "%3C", "%3E");

$newstr = array('', '', '', '&', ' ', '"', ''', "<", ">", "   ", "<", ">");

$value  = str_replace($badstr, $newstr, $value);

$value  = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $value);

return $value;

}
/**

* 私有路劲安全转化

*  Controller中使用方法:$this->controller->filter_dir($fileName)

* @param string $fileName

* @return string

*/

function filter_dir($fileName) {

$tmpname = strtolower($fileName);

$temp = array(':/',"\0", "..");

if (str_replace($temp, '', $tmpname) !== $tmpname) {

  return false;

}

return $fileName;

}
/**

* 过滤目录

*  Controller中使用方法:$this->controller->filter_path($path)

* @param string $path

* @return array

*/

public function filter_path($path) {

$path = str_replace(array("'",'#','=','`','$','%','&',';'), '', $path);

return rtrim(preg_replace('/(\/){2,}|(\\\){1,}/', '/', $path), '/');

}
/**

* 过滤PHP标签

*  Controller中使用方法:$this->controller->filter_phptag($string)

* @param string $string

* @return string

*/

public function filter_phptag($string) {

return str_replace(array(''), array('<?', '?>'), $string);

}
/**

* 安全过滤类-返回函数

*  Controller中使用方法:$this->controller->str_out($value)

* @param  string $value 需要过滤的值

* @return string

*/

public function str_out($value) {

$badstr = array("<", ">", "%3C", "%3E");

$newstr = array("<", ">", "<", ">");

$value  = str_replace($newstr, $badstr, $value);

return stripslashes($value); //下划线

}
PHP 相关文章推荐
给初学PHP的5个入手程序
Nov 23 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php email邮箱正则
Oct 08 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
PHP fclose函数用法总结
Feb 15 PHP
PHP 遍历文件实现代码
May 04 #PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 #PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 #PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 #PHP
php join函数应用
May 04 #PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 #PHP
drupal 代码实现URL重写
May 04 #PHP
You might like
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
Python3读取zip文件信息的方法
2015/05/22 Python
Python中with及contextlib的用法详解
2017/06/08 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
python3的pip路径在哪
2020/06/23 Python
2019年c语言经典面试题目
2016/08/17 面试题
2014年安全管理工作总结
2014/12/01 职场文书
检讨书大全
2015/01/27 职场文书
考察邀请函范文
2015/01/31 职场文书
食品药品安全责任书
2015/05/11 职场文书
保护动物的宣传语
2015/07/13 职场文书
生活委员竞选稿
2015/11/21 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书