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安全配置
Oct 09 PHP
PHP4实际应用经验篇(1)
Oct 09 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
PHP常用的缓存技术汇总
May 05 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
php自定义时间转换函数示例
Dec 07 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
php 图片上传类代码
2009/07/17 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
javascript引用对象的方法
2007/01/11 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
python实现绘制树枝简单示例
2014/07/24 Python
编写简单的Python程序来判断文本的语种
2015/04/07 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
总经理职责范文
2013/11/08 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
岗位竞聘书范文
2014/03/31 职场文书
化工见习报告范文
2014/10/31 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书