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 图片加水印与上传图片加水印php类
May 12 PHP
解析php类的注册与自动加载
Jul 05 PHP
使用php清除bom示例
Mar 03 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
php如何把表单内容提交到数据库
Jul 08 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
PHP常用的三种设计模式
2017/02/17 PHP
PHP实现简单登录界面
2019/10/23 PHP
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
Vue组件开发初探
2017/02/14 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
使用Python实现画一个中国地图
2019/11/23 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
高中体育教学反思
2014/01/29 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
golang中的并发和并行
2021/05/08 Golang
Matlab如何实现矩阵复制扩充
2021/06/02 Python
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js