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 图片文件上传实现代码
Dec 29 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
实例讲解php数据访问
May 09 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
关于laravel 日志写入失败问题汇总
Oct 17 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 翻页 实例代码
2009/08/07 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
PHP 中常量的知识整理
2017/04/14 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
python线程池的实现实例
2013/11/18 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python+requests接口自动化框架的实现
2020/08/31 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
奥巴马开学演讲稿
2014/05/15 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
中班教师个人总结
2015/02/05 职场文书
毕业欢送会致辞
2015/07/29 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python