Php520中的输入过滤函数Filter.docx.pdf
《Php520中的输入过滤函数Filter.docx.pdf》由会员分享,可在线阅读,更多相关《Php520中的输入过滤函数Filter.docx.pdf(23页珍藏版)》请在三一文库上搜索。
1、Php 5.2.0 中的输入过滤函数Filter 程序的安全性已经成为php开发人员首要(或者经常要)考虑的问题。不论是在单独的,开源 的或者商业项目屮,它的重要性都越來越高。 安全性对于 php是一个很重要的部分。但是所有的讨论重点都是用户的输入数据。我们在这里 并不讨论诸如 XSS, SQL注入这样的话题,如果你对这些感兴趣可以看本文结尾出的相关文 章。 不要相信外部数据 几乎所有的应用程序(、veb, 桌面,命令行)都需要接收相应的数据或者动作来完成一定的操 作然后再输出结果。 这些输入数据可能是用户或者其他的程序(网 络客户端,病毒,扫描器等)。 基本原则是:过滤所有的外来数据。对于输
2、入的过滤是保证整个程序安全的基础,和采用什么 语言或者什么系统毫无关系。Php 提供了很多相应的函数来对数据进行转换或者验证,但是和其 他语言比起来明显的缺陷是没有一个标准的函数来过滤所有数据。新的函数 Filter实现了这个 功 能。 什么是外部输入数据? 所有的 fonn 提交的数据 所有的 $_GET, $_POST, $_REQUEST Cookie($_COOKIES) 网络服务齧数据 文件 服务器信息(比如 $_SERVER SERVER NAME) 环境变量 数据库的查询 Filter很好的支持了上述这些输入数据。 为什么用 Filter? Filter扩展库的 A的就是要达到使
3、数据过滤尽量的简单,下面是两个简单例子: 检查 2 个通过 _GET方式输入的整数: 1 ; 6 exit(); 7 8 $mode 二(int) $_GET mode; 9 else 10 echo “The mode argument is missing. ; 11 exit(); 12 13 14 if (isset ($_GETtype) 15 $type = (int) $_GETtype; 16 if (! is_numeric($_GETtype) | 17 (is_numeric($_GET , type , ) 19 exit (); 20 else 21 $mode $_
4、GET type , ; else 24 echo “The type argument is missing.br / ; 25 exit (); 26 27 echo 0k. br / ; 28 ? view plain | print | copy to clipboard | ? “; exit (); ) $mode = (int)$ GETmode; )else echo “The mode argument is missing?br /“; exit (); 使用 Filter扩展库的 filtcr_input函数來过滤 : 1 array minngc =3, max_ran
5、gc =10); 5 6 if (is_null($mode) 7 echo “The mode argument is missing.“; exit (); arr 9 elseif ($mode = false) 10 echo “The mode argument /; 11 exit (); 12 else 13 echo “mode is: $mode ? br 14 15 16 if (isnull($type) 17 echo “The type , argument 18 exit(); 19 elseif ($type 二二二 false) 20 echo “The typ
6、c , argument 3 and 10.“; 21 exit(); 22 else 23 echo “type is: $type. must be a vali d i nteger. ; must be am integer betwecn / ; array (J minange 1 =3, if (is_null($mode) echo “The mode argument is missing?br / ;exit (); )elseif ($mode = false) ” echo “The 1 mode1 argument must be a valid integer ?b
7、r / :exit (); 1 nlcn ( 它是如何工作的? 把一个请求处理成用户可以用到的变量是由SAPT层来完成的。这里不去研究 SAPI 层的具体细节,就把 SAPI层看做是连接 PHP引擎和 web层 Z间的东西。 PHP 负责处理来自 SAPI的数据 (ENV, SERVER, COOKIE, GET, POST) 并转换成能用的全局变量或者像 getenv 这样的函数能调用的数据。 Filter能处理 SAPT 层的数据和 PHP引擎数据。 SAPT支持自定义的过滤选项,当每一个外部数据进行 处理的时候 PHP引擎都会调用 Filter函数。通过配置 php. ini文件可以使得
8、 SAP1默认支持 filter。 假设有一个这样的简单的POST 请求: POST /myform. php?myfi eld=hola 下图说明了正常情况下 (php5. 1或之前没有 Filter扩展的时候 ) 和安装了 Filter 扩展后在处理上的区 别: Web Server PHP SAPI Create the superglobal myfield: alert( lhola,) Scripts Web Server PHP SAPI Scripts Duplicate the raw data 运行条件 Filter在 PHP 5. 1 和之前的版本可以使用扩展方式。从PH
9、P 5. 2.0 开始变成了 PHP的标准 库。 安装 PHP 5.2.0 中已经默认支持,所以不需要再额外安装。 Unix/Linux: $ peel install filter 或者 $ wget http:/pecl.php? net/get/f订 ter $ tar xzf filter $ cd filter-0. 11.0 $ phpizc $ ? /configure $ make $ make install Windows: 在这里 http:/pec 14win. php. net 可以下载与 PHP版木相对应的 filter, dll文 件。 pOSTRAW Imyfi
10、eld: |alert(hola ,) Filter the original data and create the super globals POST myfield: alert(hola*) 在任何系统中都需要修改php. ini文件加入 extension二 filter, so然后重起 web 服务。 原则 Filter可以有两种形式: 1. 过滤判断 *允许或者不允许字符串中有指定的字符 *和数据的格式无关 *返回一个字符串 2.检测判断 *强大的数据分析 *已知的数据格式 *成功返回指定的格式可用到的函数: *filter input,得到一个输入值 *fi 1 ter_in
11、put_array, 一次得到多个输入值 *filtcr_var,过滤一个值 *fi 1 ter_var_array, 一次过滤多个值如果成功的话将返回转换过之后的格式,如果失败 (格式不符 , 值超出范围等等。)将返冋 FALSE, 如果变量没有设置将返冋NULLo使用 FTLTRR_NULL_ON_FATLURE 标记后将会在失败的时候返回NULL,变量没有设置的时候返回FALSEo 请看下面的例子,可以避免使用isset或者 is_numeric 这样的混乱局面。 检测判断的例子 1 2 3 5 Enter your age: 6 7 8 9 view plain print copy
12、to clipboard ? Enter your age: input type二“submit“ name二“submit“ value二“Go“ 处理脚本 : 1 ; 10 submit) age , , FTLTER_VAIJDATE_TNT); elseif ($age = FALSE) 11 echo “Please enter a valid age.; 12 else 13 echo “Welcome. ,z; 14 15 ? view pleiin print copy to clipboard ? “; )elseif ($age 二二二FALSE) ” echo “Ple
13、ase enter a valid age? ; )a 1 7, min _range二 7 7); 7 Sage 二 filter_input(TNPUT_POST, age ,, FTLTER_VAIJDATE_TNT, $opt ions); 8 9 if (is_null(Sage) 10 echo “The age field is required? br /“; 11 elseif ($age 二二二 FALSE) 12 echo “You must be cn ter a valid age emd be bctwc cn 7 and 77 years old? br /“;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Php520 中的 输入 过滤 函数 Filter docx
链接地址:https://www.31doc.com/p-5616295.html