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 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
php基本函数汇总
Jul 09 PHP
PHP生成树的方法
Jul 28 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
PHP Web表单生成器案例分析
Jun 02 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
python简单实现计算过期时间的方法
2015/06/09 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python输入错误后删除的方法
2019/10/12 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
市场部专员岗位职责
2013/11/30 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
立项申请报告范本
2015/05/15 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
高中政治教学反思
2016/02/23 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
python 实现体质指数BMI计算
2021/05/26 Python
使用Python获取字典键对应值的方法
2022/04/26 Python