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
PHP+DBM的同学录程序(4)
Oct 09 PHP
php zip文件解压类代码
Dec 02 PHP
php上传文件的增强函数
Jul 21 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
php使用json-schema模块实现json校验示例
Sep 28 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 object转数组示例
2014/01/15 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
js在IE与firefox的差异集锦
2014/11/11 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
React中上传图片到七牛的示例代码
2017/10/10 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
python 使用get_argument获取url query参数
2017/04/28 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python get获取页面cookie代码实例
2018/09/12 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
基于Python fminunc 的替代方法
2020/02/29 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
最新销售员个人自荐信
2013/09/21 职场文书
期中考试复习计划
2015/01/19 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书