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 相关文章推荐
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
PHP中的array数组类型分析说明
Jul 27 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
php静态文件生成类实例分析
Jan 03 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
PHP session会话操作技巧小结
Sep 27 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 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处理restful请求的路由类分享
2014/02/27 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
一个基于jquery的文本框记数器
2012/09/19 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
python实现复制整个目录的方法
2015/05/12 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python实现列表的排序方法分享
2019/07/01 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
小学校长竞聘演讲稿
2014/05/16 职场文书
南京青奥会口号
2014/06/12 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2014年科普工作总结
2014/12/06 职场文书
社区文明倡议书
2015/04/28 职场文书
二审答辩状格式
2015/05/22 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
PHP判断是否是json字符串
2021/04/01 PHP