首页 后端开发 php教程 php中使用过滤功能的输入验证

php中使用过滤功能的输入验证

Jul 25, 2016 am 09:10 AM

  1. if (isset($_GET["value"])) {
  2. $value = $_GET["value"];
  3. }
  4. else {
  5. $value = false;
  6. }
  7. if (is_numeric($value) && ($value >= 15 && $value // run my code
  8. }
  9. else {
  10. // handle the issue
  11. }
复制代码

这是一个非常基本的例子,我们已经写更多的行,我想看到??的。 首先,因为我们不能确定设置的$ _GET,代码执行适当的检查,使脚本不翻倒。 其次是美元值现在是一个“脏”的变量,因为它已被直接从指定的$ _GET价值的事实。我们需要照顾,不使用美元的价值在代码的其他地方的情况下,我们打破任何东西。 再有就是,16.0 is_numeric()函数是有效的,因为各种语气词它的问题。 最后,我们必须与事实问题,如果声明是了一口采取位,是一个额外的逻辑位通过当你通过代码跟踪工作。 现在比较上面的例子:

  1. $value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT,
  2. array("options" => array("min_range" => 15, "max_range" => 20)));
  3. if ($value) {
  4. // run my code
  5. }
  6. else {
  7. // handle the issue
  8. }
复制代码

不会让你感觉温暖和模糊? filter_input()处理的$ _GET值没有被设置,所以你不必强调脚本是否接收正确的信息,或不。 你也不必约担心美元价值是肮脏的,因为它已被证实之前,它已经被分配。 注意现在的16.0不再有效。 最后,我们的逻辑不再复杂。这只是一个快速检查为truthy值(filter_input()如果验证失败,将返回false和null如果没有设置$ _GET [“价值”)。 显然,在一个真实的世界设定,你可以提取数组存储在配置文件中的变量到某个地方,以便可以得到的东西,甚至无需进入业务逻辑改变。华丽! 现在,你可能会想,这可能是有用抢一对夫妇的简单脚本的$ _GET或$ _POST变量,但内部使用的函数或类约?幸运的是,我们有该filter_var() 。 filter_var()函数被引入,同时作为filter_input()做同样的事情。

  1. //这是一个示例函数,不使用这实际上电子邮件,

  2. //那将是愚蠢的。

  3. function emailUser($email) {
  4. mail($email, "Here is my email", "Some Content");
  5. }
复制代码

这里的危险是,有没有试图发送一封电子邮件,从字面上任何值可以存储在停止邮件()函数$电子邮件。这可能会导致无法发送电子邮件,或东西越来越可能在最坏的情况下使用的恶意功能。 我所看到的人做的 ??结果支票的mail() ,这是很好看,如果该函数成功完成,但损害的是时间值返回。 像这样的东西是更加理智:

  1. // This is a sample function, do not use this to actually email,
  2. // that would be silly.
  3. function emailUser($email) {
  4. $email = filter_var($email, FILTER_VALIDATE_EMAIL);
  5. if ($email !== false) {
  6. mail($email, "Here is my email", "Some Content");
  7. }
  8. else {
  9. // handle the issue invalid email address
  10. }
  11. }
复制代码

用了很多例子,包括上述的问题是,他们是基本的。你可能会想,不能用于基本检查以外的任何filter_var()或filter_input() 。并允许你在一个过滤器传递给这些函数称为FILTER_CALLBACK。 FILTER_CALLBACK使您可以通过在您创建将接受被过滤的变量输入功能-这是哪里,你就可以开始,因为有很多的乐趣,你就可以开始自己的业务逻辑应用到您的过滤。 一些潜在的缺陷 这些功能是非常伟大,他们让你做一些真正强大的过滤,我们已经讨论过,可以帮助提高你的代码的安全性和可靠性。但是也有一些潜在的缺点,我会觉得我是失职的,如果我不指出来。 主要缺陷是,只要你的过滤器适用于它的功能是。最后一个例子,使用电子邮件验证-如何处理电子邮件地址改变5.2.14和5.3.3之间FILTER_VALIDATE_EMAIL,即使假设所有的应用程序上运行同一版本的PHP有电子邮件地址,在技术上是有效的,你可能不希望。请确保您知道您所使用的过滤器。 第二个陷阱是,人们认为,如果他们在一些过滤器,然后把他们的代码是安全的。筛选的变量去一些帮助,但它不会使你的代码100%安全不受虐待。我很想谈谈这个问题,但超出了本文的范围和我的字数已经是相当高的! 总结: 我想你在你的代码的一个函数,只有一个,看看会发生什么,当你在不同的数据类型和不同的价值观传递。 然后,我想你申请一些在这里讨论的过滤方法,看看是否有在您的代码如何执行差异。我很想知道你是怎么在评论。



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

See all articles