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 相关文章推荐
PHPMailer 中文使用说明小结
Jan 22 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 PHP
php json中文编码为null的解决办法
Dec 14 PHP
php数据序列化测试实例详解
Aug 12 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
Python调用服务接口的实例
2019/01/03 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
python 变量初始化空列表的例子
2019/11/28 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
大学生求职简历的自我评价
2013/10/14 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis