php常用的安全过滤函数集锦


Posted in PHP onOctober 09, 2014

虽然各种开发框架给我们提供了很好的安全的处理方式,但是,我们还是要注意一下安全问题的。
 原因简单:很多小的功能和项目是用不到框架的,我们需要自己解决安全问题!

①常用的安全函数有哪些:

mysql_real_escape_string()

 addslashes()

②这些函数的作用:

mysql_real_escape_string()和addslashes()函数都是对数据中的 单引号、双引号进行转义!也就是防止sql注入!
 但是mysql_real_escape_string()考虑了字符集,更加的安全一些!
 经过查阅相关的资料,可以得出一个结论:当前的字符集是单字节的话,这两个函数作用相同,都可以起到转义过滤的作用,但是,有谁会只是用单字节呢?尤其是utf8越来越广泛的被使用到!

③函数的用法:

在了解mysql_real_escape_string()和addslashes()这两个函数的用法的时候,我们必须先了解另外两个函数的含义!

get_magic_quotes_gpc()和get_magic_quotes_runtime(),我们来比较一下两个函数的异同:

相同:
 
a、两者都是用来获取php.ini配置文件的配置情况的!当开启的时候返回1,关闭的时候返回0!

b、当开启的时候,都会对指定范围内的数据进行转义过滤!

php常用的安全过滤函数集锦

不同:
a、两者的作用范围不同:
magic_quotes_gpc主要作用于web客户端,简单的说主要是对$_GET、$_POST、$_COOKE中的数据进行过滤!
magic_quotes_runtime主要是对文件中读取的数据或从数据库查询得到的数据进行过滤!
b、设置时间不同:
magic_quotes_gpc不可以在运行时进行设置[只能在重启服务器的时候读取该设置]
magic_quotes_runtime可以在运行时设置!
 注意:所谓运行时设置,就是,我们可以通过ini_set()函数,在脚本中对php.ini文件中的配置进行设置!
 
明白了get_magic_quotes_gpc()和get_magic_quotes_runtime()这两个函数的后,我们就应该明白了:当我们检测到php.ini配置文件开启了magic_quotes_runtime 和 magic_quotes_gpc的话,就会自动的对指定范围内的数据进行转义!如果关闭的话,我们就需要使用mysql_real_escape_string()[或者addslashes函数进行过滤]

④举例说明:

1、无论magic_quotes_gpc和magic_quotes_runctime开启还是关闭的情况下getdata.php脚本,都可以对数据进行安全转移,内容如下:

<?php

    if(!get_magic_quotes_gpc()) {

        foreach($_GET as $key=> &$value) {

            $value = mysql_real_escape_string($value);

        }

    }

    if(!get_magic_quotes_runtime()) {

        $sourceDataRecord= file('./sourceData.txt');

        if($sourceDataRecord) {

            foreach($sourceDataRecord as $sourceKey => &$sourceValue) {

                $sourceValue = mysql_real_escape_string($sourceValue);

            }

        }

    }

    $gpcData = implode("\t", $_GET);

    $runtimeData = implode("\t", $sourceDataRecord);

    echo $gpcData, $runtimeData;

?>

 在sourceData.txt中的内容如下:

" It's anoterh sunday afternoon

 I'm trunning turnning.....turnning around "

 

我们请求getData.php时的url如下:

php.test.com/safe/getdata.php?name=maw'eibin&age=25
 
执行结果如下:

maw\'eibin 25\" It\'s anoterh sunday afternoon\r\n I\'m trunning

 turnning.....turnning around \"

⑤参考资料:

PHP 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
php反弹shell实现代码
Apr 22 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
php header函数的常用http头设置
Jun 25 PHP
PHP处理会话函数大总结
Aug 05 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
php微信开发之关键词回复功能
Jun 13 PHP
自定义session存储机制避免会话保持问题
Oct 08 #PHP
PHP定时任务延缓执行的实现
Oct 08 #PHP
在Win7 中为php扩展配置Xcache
Oct 08 #PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 #PHP
两千行代码的PHP学习笔记汇总
Oct 05 #PHP
PHP实现定时执行任务的方法
Oct 05 #PHP
PHP实现图片旋转效果实例代码
Oct 01 #PHP
You might like
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
angular学习之ngRoute路由机制
2017/04/12 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python设计模式之代理模式简单示例
2018/01/09 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
伦敦一卡通:The London Pass
2018/11/30 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
你对IPv6了解程度
2016/02/09 面试题
廉政教育心得体会
2014/01/01 职场文书
高三生物教学反思
2014/01/25 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
本溪关门山导游词
2015/02/09 职场文书
社区党建工作总结2015
2015/05/13 职场文书
应收账款管理制度
2015/08/06 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis