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实现MVC开发得最简单的方法――模型
Apr 10 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
如何在PHP中生成随机数
Jun 04 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的字符串用法小结
2010/06/08 PHP
php 保留字列表
2012/10/04 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
Django中处理出错页面的方法
2015/07/15 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python爬虫增加访问量的方法
2019/08/22 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python基于socket函数实现端口扫描
2020/05/28 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
《小儿垂钓》教学反思
2014/02/23 职场文书
挂职学习心得体会
2014/09/09 职场文书
党的生日演讲稿
2014/09/10 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
投资入股协议书
2016/03/22 职场文书
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android