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 相关文章推荐
php分页函数
Jul 08 PHP
php UTF8 文件的签名问题
Oct 30 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
PHP基于进程控制函数实现多线程
Dec 09 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获取本周第一天和最后一天示例代码
2014/02/24 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
使用ES6语法重构React代码详解
2017/05/09 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
Python基于百度云文字识别API
2018/12/13 Python
python实现烟花小程序
2019/01/30 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
浅谈python出错时traceback的解读
2020/07/15 Python
python归并排序算法过程实例讲解
2020/11/04 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
标记环介质访问控制协议
2016/03/27 面试题
介绍一些UNIX常用简单命令
2014/11/11 面试题
客服文员岗位职责
2013/11/29 职场文书
参观监狱心得体会
2014/01/02 职场文书
春风行动实施方案
2014/03/28 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
运动会方队口号
2014/06/07 职场文书
公司合作意向书范文
2014/07/30 职场文书
教研活动主持词
2015/07/03 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers