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生成静态HTML速度快类库
Mar 18 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
PHP中其实也可以用方法链
Nov 10 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
php 启动报错如何解决
Jan 17 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP中each与list用法分析
Jan 08 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 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 is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python sorted函数详解(高级篇)
2018/09/18 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python求绝对值的三种方法小结
2019/12/04 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python异常处理和日志处理方式
2019/12/24 Python
Python文件操作基础流程解析
2020/03/19 Python
Python 必须了解的5种高级特征
2020/09/10 Python
python 如何设置守护进程
2020/10/29 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
2015年行政助理工作总结
2015/04/30 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python