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 相关文章推荐
再次研究下cache_lite
Feb 14 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
基于laravel Request的所有方法详解
Sep 29 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
php 魔术方法详解
2014/11/11 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
python实现五子棋程序
2020/04/24 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
开学典礼决心书
2014/03/11 职场文书
行政部岗位职责范本
2014/03/13 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
节能环保口号
2014/06/12 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
法人委托书
2014/07/31 职场文书
班子四风对照检查材料
2014/08/21 职场文书
小学师德师风整改措施
2014/10/27 职场文书
优秀教师个人材料
2014/12/15 职场文书
详解Django的MVT设计模式
2021/04/29 Python
Java移除无效括号的方法实现
2021/08/07 Java/Android
MySQL学习必备条件查询数据
2022/03/25 MySQL