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和ACCESS写聊天室(六)
Oct 09 PHP
php 购物车实例(申精)
May 11 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php通用防注入程序 推荐
Feb 26 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
将php数组输出html表格的方法
Feb 24 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
掌握PHP垃圾回收机制详解
Mar 13 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
一个取得文件扩展名的函数
2006/10/09 PHP
php实现快速排序法函数代码
2012/08/27 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python translator使用实例
2008/09/06 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
副董事长岗位职责
2014/04/02 职场文书
初中新生军训方案
2014/05/13 职场文书
企业精神口号
2014/06/11 职场文书
为自己工作观后感
2015/06/11 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
mysql查找连续出现n次以上的数字
2022/05/11 MySQL