一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

php filter安全字符过滤

时间:2008-10-29 编辑:简简单单 来源:一聚教程网

PHP的过滤器是用来验证和过滤数据来自不安全的来源,比如用户输入。


-------------------------------------------------- ------------------------------

什么是PHP的过滤器?
了一个PHP过滤器是用来验证和过滤数据来自不安全的来源。

为了测试,验证和过滤用户输入的或定制的数据是一个重要组成部分,任何网络应用。

PHP的过滤器扩展的目的是使数据过滤更容易和更快。


-------------------------------------------------- ------------------------------

为什么要使用过滤器?
几乎所有的网络应用依赖于外部输入。通常这是来自用户或其他应用程序(如Web服务) 。通过使用过滤器,您可以确保您的申请得到正确的输入类型。

你应该总是过滤所有的外部数据!

输入过滤是最重要的一个应用程序的安全问题。

什么是外部数据?

输入数据从一种形式
曲奇
Web服务数据
服务器变量
数据库查询结果

-------------------------------------------------- ------------------------------

功能和过滤器
要筛选一个变量,使用下列其中一个过滤功能:

filter_var ( ) -过滤器的单一变量指定的过滤器
filter_var_array ( ) -过滤一些变数与相同或不同的过滤器
filter_input -获取一个输入变量和筛选,
filter_input_array -获取几个输入变量和过滤这些相同或不同的过滤器
在下面的例子中,我们验证一个整数使用filter_var ( )函数:


if(!filter_var($int, FILTER_VALIDATE_INT))
 {
 echo("Integer is not valid");
 }
else
 {
 echo("Integer is valid");
 }
?>

上述的程式码使用“ FILTER_VALIDATE_INT ”过滤器来过滤变数。由于整数是有效的,产出的以上代码将是: “整数是有效的。 ”

如果我们尝试了变数,不是整数(如“ 123abc ” ) ,输出将是: “整数是无效的” 。

如需完整清单的功能和过滤器,请访问我们的PHP滤波器参考。



-------------------------------------------------- ------------------------------

验证和消毒
有两种过滤器:

验证过滤器:

是用来验证用户输入
严格的格式规则(如网址或e - mail验证)
预期收益型成功或FALSE失败
消毒过滤器:

被用来允许或拒绝特定字符的字符串
没有任何数据格式规则
随时返回字符串

-------------------------------------------------- ------------------------------

选项和旗帜
选择和旗帜是用来添加额外的过滤选项到指定的过滤器。

不同的过滤器有不同的选择和旗帜。

在下面的例子中,我们验证一个整数使用filter_var ( )和“ min_range ”和“ max_range ”选项:

 


$int_options = array(
"options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
 {
 echo("Integer is not valid");
 }
else
 {
 echo("Integer is valid");
 }
?>
 

像上面的代码,选择必须建立在一个关联数组的名称“选项” 。如果一个标志使用它并不需要在一个数组。

由于整数是“ 300 ”这不是在指定的范围内,输出的代码段将是: “整数是无效的” 。

如需完整清单的功能和过滤器,请访问我们的PHP滤波器参考。检查每一个过滤器,看看选择和旗帜可用。


-------------------------------------------------- ------------------------------

验证输入
让我们尝试验证投入的一种形式。

首先,我们需要做的是,以确认输入的数据,我们正在寻找存在。

然后,我们过滤器输入数据使用filter_input ( )函数。

在下面的例子中,输入变量“电子邮件”发送到PHP页面:

 

 

例如解释
上面的例子中有一个输入(电子邮件)给它用“获得”的方法:

如果检查“电子邮件”输入变量的“获取”型存在
如果输入变量存在,检查是否是一个有效的e - mail地址

-------------------------------------------------- ------------------------------

净化输入
让我们尝试清理的网址发出的一种形式。

首先,我们确认,输入数据,我们正在寻找存在。

然后,我们清理输入数据使用filter_input ( )函数。

在下面的例子中,输入变量“网址”发送到PHP页面:

 

 

例如解释
上面的例子中的输入器( URL )发送给它使用“邮报”的方法:

如果选中“网址”输入“后”型存在
如果输入变量存在,净化(拿走无效字符) ,并存储在变量$网址
如果输入变量是一个字符串这样的“ http://www.W3ååSchøøools.com/ ” ,网址为可变后的消毒看起来就像这样:

 

www.111com.net

 

过滤器多投入
表单几乎总是由一个以上的输入栏位。为了避免呼叫filter_var或filter_input职能,多,

我们可以使用filter_var_array或filter_input_array职能。

在这个例子中我们使用filter_input_array ( )函数来筛选三个的GET的变数。

在收到的GET变量是一个名字,年龄和e - mail地址:

 array
  (
  "filter"=>FILTER_SANITIZE_STRING
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
 {
 echo("Age must be a number between 1 and 120.
"); } elseif(!$result["email"]) { echo("E-Mail is not valid.
"); } else { echo("User input is valid"); } ?>

 

例如解释
上面的例子中有三个输入(姓名,年龄和电子邮件)发送给它用“获得”的方法:

设置一个数组包含的名称输入变量和使用的过滤器在指定的输入变量
呼叫filter_input_array ( )函数与输入变量的GET和数组我们刚才设置
检查“年龄”和“电子邮件”变数$结果变量为无效的投入。 (如果其中任何一个输入变量是无效的,即输入变量将是假的后, filter_input_array ( )函数)
第二个参数的filter_input_array ( )函数可以是一个数组或一个过滤器编号。

如果参数是一个单一的过滤器编号中所有的值输入数组过滤指定的过滤器。

如果参数是一个数组它必须遵循这些规则:

必须是一个关联数组包含一个输入变量作为数组的关键(如“年龄”输入变量)
数组值必须是一个过滤器的ID或阵列指定过滤器,旗帜和选择

-------------------------------------------------- ------------------------------

利用过滤器回调
可能是调用用户定义的功能和使用它作为一个过滤器使用FILTER_CALLBACK过滤器。这样一来,我们已经完全控制数据过滤。

您可以创建自己的用户定义的函数或使用现有的PHP函数

功能要使用指定的过滤器以同样的方式作为一种选择是指定的。在一个关联数组的名称“选项”

在下面的例子中,我们使用用户创建功能把所有“ _ ”为空格:

 

"convertSpace"));
?>
 
输出如
 
Peter is a great guy!
 
例如解释
上面的例子中转换所有“ _ ”为空格:

创建一个函数来取代“ _ ” ,以空格
呼叫filter_var ( )函数与FILTER_CALLBACK过滤器和一个数组包含我们的功能

热门栏目