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程序
Oct 09 PHP
PHP+APACHE实现用户论证的方法
Oct 09 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
深入理解PHP内核(一)
Nov 10 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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
Smarty保留变量用法分析
2016/05/23 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
php strftime函数的详细用法
2018/06/21 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
python实现斐波那契数列的方法示例
2017/01/12 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
基于python实现聊天室程序
2018/07/27 Python
python pygame实现方向键控制小球
2019/05/17 Python
python中open函数的基本用法示例
2019/09/07 Python
python requests库的使用
2021/01/06 Python
医药营销个人求职信范文
2014/02/07 职场文书
个人安全承诺书
2014/05/22 职场文书
法人委托书
2014/07/31 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
心灵点滴观后感
2015/06/02 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python