iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中怎么实现数据过滤
  • 712
分享到

PHP中怎么实现数据过滤

2023-06-17 19:06:53 712人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关PHP中怎么实现数据过滤,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。PHP数据过滤调度方法这种方法是用一个单一的php脚本调度(通过 URL)。其他

本篇文章给大家分享的是有关PHP中怎么实现数据过滤,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

PHP数据过滤调度方法

这种方法是用一个单一的php脚本调度(通过 URL)。其他任何操作在必要的时候使用include或require包含进来。这种方法一般需要每个 URL 都传递一个单独的GET变量用于调度。这个GET变量可以被认为是用来替代脚本名称的更加简化的设计。例如:

Http://example.org/dispatch.php?task=print_fORMdispatch.php是***的根文件(Document root)。它可以让开发者做两件非常重要的事情:

在dispatch.php最开始实现一些全局的安全处理,并且确保这些处理不可以被绕过。容易确定在必要的地方进行数据过滤,特别是一些特殊目的的控制流操作中。看下面的例子以便进一步讨论dispatch.php脚本:

  1. < ?php  

  2.  

  3. switch ($_GET['task']){case 
    'print_form':include '/inc/
    presentation/form.inc';  

  4. break;  

  5. case 'process_form':$form_valid = false;  

  6. include '/inc/logic/process.inc';  

  7. if ($form_valid){include '/inc/
    presentation/end.inc';}else{include 
    '/inc/presentation/form.inc';}
    break;default:include '/inc/presentation
    /index.inc';  

  8. break;  

  9. }  

  10. ?> 

如果这是***的可公开访问到的 PHP 脚本,则可以确信的一点是这个程序的设计可以确保在最开始的全局安全处理无法被绕过。同时也让开发者容易看到特定任务的控制流程。例如,不需要浏览整个代码就可以容易的知道:当$form_valid为true时,end.inc是***显示给用户的;由于它在process.inc被包含之前,并刚刚初始化为false,可以确定的是process.inc的内部逻辑会将设置它为true;否则表单将再次显示(可能会显示相关的错误信息)。

PHP数据过滤要注意的问题

如果你使用目录定向文件,如index.php(代替dispatch.php),你可以像这样使用 URL 地址:http://example.org/?task=print_form。

你还可以使用ApacheForceType重定向或者mod_rewrite来调整 URL 地址:http://example.org/app/print-form。

PHP数据过滤的包含方法

另外一种方式是使用单独一个模块,这个模块负责所有的安全处理。这个模块被包含在所有公开的 PHP 脚本的最前端(或者非常靠前的部分)。参考下面的脚本security.inc

  1. < ?php  

  2. switch ($_POST['form'])  

  3. {case 'login':  

  4. $allowed = array();  

  5. $allowed[] = 'form';  

  6. $allowed[] = 'username';  

  7. $allowed[] = 'passWord';  

  8. $sent = array_keys($_POST);  

  9. if ($allowed == $sent)  

  10. {include '/inc/logic/
    process.inc';}  

  11. break;  

  12. }  

  13. ?> 

在这个PHP数据过滤例中,每个提交过来的表单都认为应当含有form这个***验证值,并且security.inc独立处理表单中0需要过滤的数据。实现这个要求的html表单如下所示:

  1. < form. action="/receive.php" 
    method="POST"> 

  2. <input type="hidden" 
    name="form" value="login" /> 

  3. < p>Username:  

  4. <input type="text" name="username" /> 

  5. < /p> 

  6. < p>Password:<input 
    type="password" name="password" /> 

  7. < /p> 

  8. < input type="submit" /> 

  9. < /form> 

叫做$allowed的数组用来检验哪个表单变量是允许的, 这个列表在表单被处理前应当是一致的。流程控制决定要执行什么,而process.inc是真正过滤后的数据到达的地方。

注意

确保security.inc总是被包含在每个脚本的最开始的位置比较好的方法是使用auto_prepend_file设置。

PHP数据过滤的例子

建立白名单对于PHP数据过滤是非常重要的。由于不可能对每一种可能遇到的表单数据都给出例子,部分例子可以帮助你对此有一个大体的了解。

下面的代码对邮件地址进行了验证:

  1. < ?php  

  2. $clean = array();  

  3. $email_pattern = '
    /^[^@\s<&>]+@([-a-z0-9]+\.)
    +[a-z]{2,}$/i';  

  4. if (preg_match($email_
    pattern, $_POST['email']))  

  5. {$clean['email'] = $_POST
    ['email'];}  

  6. ?> 

下面的PHP数据过滤代码确保了$_POST['color']的内容是red,green,或者blue:

  1. < ?php  

  2. $clean = array();  

  3. switch ($_POST['color'])
    {case 'red':case 'green':case 
    'blue':$clean['color'] = 
    $_POST['color'];  

  4. break;  

  5. }  

  6. ?> 

下面的PHP数据过滤代码确保$_POST['num']是一个整数(integer):

  1. < ?php  

  2. $clean = array();  

  3. if ($_POST['num'] == 
    strval(intval($_
    POST['num']))){$clean
    ['num'] = $_POST['num'];  

  4. }  

  5. ?> 

下面的PHP数据过滤代码确保$_POST['num']是一个浮点数(float):

  1. < ?php  

  2. $clean = array();  

  3. if ($_POST['num'] == 
    strval(floatval($_POST
    ['num']))){$clean['num'] 
    = $_POST['num'];  

  4. }  

  5. ?> 

PHP数据过滤的名字转换

之前每个例子都使用了数组$clean。对于开发人员判断数据是否有潜在的威胁这是一个很好的习惯。 永远不要在对数据验证后还将其保存在$_POST或者$_GET中,作为开发人员对超级全局数组中保存的数据总是应当保持充分的怀疑。

需要补充的是,使用$clean可以帮助思考还有什么没有被过滤,这更类似一个白名单的作用。可以提升安全的等级。

如果仅仅将验证过的数据保存在$clean,在数据验证上仅存的风险是你所引用的数组元素不存在,而不是未过滤的危险数据。

PHP数据过滤的时机

一旦 PHP 脚本开始执行,则意味着 HTTP 请求已经全部结束。此时,用户便没有机会向脚本发送数据。因此,没有数据可以被输入到脚本中(甚至reGISter_globals被开启的情况下)。这就是为什么初始化变量是非常好的习惯。

以上就是PHP中怎么实现数据过滤,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网PHP编程频道。

--结束END--

本文标题: PHP中怎么实现数据过滤

本文链接: https://www.lsjlt.com/news/292232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中怎么实现数据过滤
    本篇文章给大家分享的是有关PHP中怎么实现数据过滤,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。PHP数据过滤调度方法这种方法是用一个单一的PHP脚本调度(通过 URL)。其他...
    99+
    2023-06-17
  • Grafana中怎么实现数据过滤和聚合
    在Grafana中实现数据过滤和聚合可以通过查询语句和面板设置来实现。以下是一些常见的方法: 使用查询语句中的WHERE...
    99+
    2024-04-02
  • PHP中怎么利用filter判断过滤数据
    这期内容当中小编将会给大家带来有关PHP中怎么利用filter判断过滤数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。***种、PHP filter判断一个变量的内容是否符合要求使用函数filter_v...
    99+
    2023-06-17
  • PHP中怎么用array_filter()过滤数组
    在PHP中,可以使用array_filter()函数来过滤数组。array_filter()函数的作用是使用回调函数过滤数组中的元素...
    99+
    2024-04-02
  • Java整合mybatis实现过滤数据
    目录场景例子执行流程配置切面方案实现场景 权限1:只能看到自己创建的数据权限2:只能看到本部门的数据权限3:查看全部数据 例子 小明有权限1: { "code": "200"...
    99+
    2023-01-14
    Java mybatis过滤数据 Java 过滤数据
  • 如何在MongoDB中实现数据过滤功能
    如何在MongoDB中实现数据过滤功能MongoDB 是一种世界上最流行的 NoSQL 数据库,它以其高度的扩展性和灵活性而广受开发人员的青睐。在使用 MongoDB 时,我们经常需要根据特定的条件从数据库中检索数据。为此,MongoDB ...
    99+
    2023-10-22
    MongoDB 数据过滤
  • 在 PHP 中过滤数组
    本教程将教授你可用于在 PHP 中过滤数组的不同方法。这些方法将使用内置的 PHP 函数,如 array_intersect_key、array_flip、array_filter 和 array_ke...
    99+
    2024-02-27
  • SQL实现数据过滤流程详解
    目录数据准备student 表过滤数据过滤单个值过滤null 值过滤集合BETWEEN IN NOT IN使用通配符过滤数据LIKE使用逻辑操作符组合WHERE子句数据准备student 表 CREATE TAB...
    99+
    2023-01-05
    SQL数据过滤 SQL过滤语句
  • php中怎么使用array_filter()函数过滤数组
    这篇文章主要介绍php中怎么使用array_filter()函数过滤数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext ...
    99+
    2023-06-14
  • Vue过滤器怎么实现
    这篇文章主要介绍“Vue过滤器怎么实现”,在日常操作中,相信很多人在Vue过滤器怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue过滤器怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!&l...
    99+
    2023-06-25
  • PHP数据过滤函数详解:filter_var、filter_input、filter_has_var等函数的数据过滤技巧
    PHP数据过滤函数详解:filter_var、filter_input、filter_has_var等函数的数据过滤技巧,需要具体代码示例在 Web 开发中,数据过滤是非常重要的一环。过滤用户输入的数据可以保护我们的应用程序免受潜在的安全威...
    99+
    2023-11-18
    数据过滤 filter_input filter_var 数据过滤函数的关键词:PHP filter_has_var
  • ASP.NET Core MVC中怎么实现过滤器
    本篇内容介绍了“ASP.NET Core MVC中怎么实现过滤器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!过滤器如何...
    99+
    2023-06-29
  • MySQL怎么过滤重复数据
    本篇内容主要讲解“MySQL怎么过滤重复数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL怎么过滤重复数据”吧!方法1:加关键字 DISTINCT在mysql中,可以利用“SELEC&...
    99+
    2023-07-06
  • Django模板中怎么实现过滤器
    这篇文章主要介绍了Django模板中怎么实现过滤器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。模版常用过滤器在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Pyt...
    99+
    2023-06-15
  • C#中怎么用Intersect方法过滤数据
    在C#中,可以使用LINQ的Intersect方法来过滤数据。Intersect方法用于返回两个集合的交集,即返回同时存在于两个集合...
    99+
    2024-04-02
  • Redis中的布隆过滤器怎么实现
    这篇文章主要介绍“Redis中的布隆过滤器怎么实现”,在日常操作中,相信很多人在Redis中的布隆过滤器怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis中的布...
    99+
    2024-04-02
  • neatupload文件过滤怎么实现
    要实现NeatUpload文件过滤,您可以执行以下步骤: 在您的Web应用程序中,打开Web.config文件,并找到NeatU...
    99+
    2024-02-29
    neatupload
  • MongoDB中怎么实现where条件过滤
    这期内容当中小编将会给大家带来有关MongoDB中怎么实现where条件过滤,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 实际上习...
    99+
    2024-04-02
  • 怎么在java中使用Filter实现过滤
    今天就跟大家聊聊有关怎么在java中使用Filter实现过滤,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应...
    99+
    2023-06-14
  • PHP数据过滤实战指南:化身数据安全卫士!
    一、为什么要进行数据过滤? 数据过滤是指在处理数据之前对数据进行检查和清理的过程。在Web开发中,用户输入的数据可能存在恶意攻击或错误,如果不进行过滤,可能会导致安全漏洞或数据完整性问题。 二、PHP数据过滤的常用方法 1、数据类型检测...
    99+
    2024-02-05
    文章 PHP 数据过滤 安全 代码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作