php filter安全字符过滤

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

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

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

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

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

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

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

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

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

什么是外部数据?

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

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

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

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

<?php
$int = 123;
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 ”选项:

 

<?php
$var=300;
$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页面:

 

<?php
if(!filter_has_var(INPUT_GET, "email"))
 {
 echo("Input type does not exist");
 }
else
 {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
  {
  echo "E-Mail is not valid";
  }
 else
  {
  echo "E-Mail is valid";
  }
 }
?>
 

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

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

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

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

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

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

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

 

<?php
if(!filter_has_var(INPUT_POST, "url"))
 {
 echo("Input type does not exist");
 }
else
 {
 $url = filter_input(INPUT_POST,
 "url", FILTER_SANITIZE_URL);
 }
?>
 

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

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

 

www.111cn.net

 

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

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

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

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

<?php
$filters = array
 (
 "name" => 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.<br />");
 }
elseif(!$result["email"])
 {
 echo("E-Mail is not valid.<br />");
 }
else
 {
 echo("User input is valid");
 }
?>

 

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

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

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

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

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

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

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

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

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

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

 

<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}

$string = "Peter_is_a_great_guy!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>
 
输出如
 

Peter is a great guy!
 

例如解释
上面的例子中转换所有“ _ ”为空格:

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 数据
, 函数
, 变量
, 过滤器
用户
filter 过滤特殊字符、filter过滤非法字符、php array filter过滤、php filter 过滤器、php过滤特殊字符,以便于您获取更多的相关知识。

时间: 2024-11-08 00:35:25

php filter安全字符过滤的相关文章

Android编程之TextView的字符过滤功能分析_Android

本文实例分析了Android编程之TextView的字符过滤功能.分享给大家供大家参考,具体如下: TextView可以设置接受各式各样的字符,通过过滤指定的字符来满足不同应用的输入和显示要求. 通过xml配置: android:InputType number          接受整数输入 numberSigned    接受有符号整数输入 numberDecimal   接受整数和小数的输入 android:digits 指定接受固定的数字,如android:digits="012345&

字符过滤程序

根据客户的要求他们可以在后台手动的设置和过滤一些不应该出现的关键字,所以就写出下面的代码了喽,字符过滤程序 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&quo

Android编程之TextView的字符过滤功能分析

本文实例分析了Android编程之TextView的字符过滤功能.分享给大家供大家参考,具体如下: TextView可以设置接受各式各样的字符,通过过滤指定的字符来满足不同应用的输入和显示要求. 通过xml配置: android:InputType number          接受整数输入 numberSigned    接受有符号整数输入 numberDecimal   接受整数和小数的输入 android:digits 指定接受固定的数字,如android:digits="012345&

命名空间-ASP.NET在加入字符过滤时,调试出错

问题描述 ASP.NET在加入字符过滤时,调试出错 ASP.NET在加入字符过滤时,调试出错,错误信息为""ExtensionAttribute"在命名空间"System.Runtime.CompilerServices"中不明确 ",请教原因 解决方案 你倒入的其他名字空间也存在ExtensionAttribute这个类的定义吧,导致编辑器不知道要使用那个空间下的类库,加上完整名字空间 System.Runtime.CompilerServic

非法字符过滤函数

Function ChkStr(InString) '非法字符过滤函数   If InString<>"" Then    InString=Replace(LCase(InString)," ","")    InString=Replace(LCase(InString),";","")    InString=Replace(LCase(InString),"'",&q

php表单敏感字符过滤类_php技巧

本文实例讲述了php表单敏感字符过滤类及其用法.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: /** * 表单生成验证文件 */ $_form = new formHtmlFind(); class formHtmlFind{         /**          * 输出表单函数          * $formKey  表单键          * $infoArray 更新时的原始信息数组          */           public function for

非法字符过滤

非法字符过滤本文章主要是讲 php 过滤非法字符没讲asp过滤非法字符 的函数但是思想都一样的. ) 过滤影响MySQL正常运行的字符. 当需要把用户输入的内容(有可能包含单引号.双引号 .反斜线.空字元 NUL )代入到mysql的语句 中执行时,应该把APACHE中的magic_quotes_gpc项设成On. 如果APACHE中的此项设成Off时,也可用php的函数addslashes()达到相同的目的,但这两种手段不能同时使用,否则会出现重复替换,出现错误. 样例: PHP代码 <?ph

网页前台通过js非法字符过滤代码(骂人的话等等)_javascript技巧

代码一:keypress事件时使用 复制代码 代码如下: /****************************************************/ //功能:过滤非法字符 //说明:keypress事件时使用 //作者:XXXXXXX //日期:2010年5月7日 /****************************************************/ function surnam_keypress(event) { //非法字符集 var codes

php 表单敏感字符过滤代码

php 表单敏感字符过滤代码 /** * 表单生成验证文件 */ $_form = new formHtmlFind(); class formHtmlFind{         /**          * 输出表单函数          * $formKey  表单键          * $infoArray 更新时的原始信息数组          */         public function formHtml($array,$infoArray='')         {