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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
php的正则处理函数总结分析
Jun 20 PHP
PHP教程 变量定义
Oct 23 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 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
typecho插件编写教程(一):Hello World
2015/05/28 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
python实现得到一个给定类的虚函数
2014/09/28 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
把pandas转换int型为str型的方法
2019/01/29 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
酒店实习个人鉴定
2013/12/07 职场文书
老师给学生的表扬信
2014/01/17 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python