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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
php不用正则采集速度探究总结
Mar 24 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
php创建sprite
Feb 11 PHP
dedecms中使用php语句指南
Nov 13 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 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编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
python开发入门——set的使用
2020/09/03 Python
python实现银行账户系统
2021/02/22 Python
外贸业务员求职信范文
2013/12/12 职场文书
教师简历自我评价
2014/02/03 职场文书
师范生自荐信模板
2014/05/28 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang
Golang 字符串的常见操作
2022/04/19 Golang
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android