Maison développement back-end tutoriel 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%安全不受虐待。我很想谈谈这个问题,但超出了本文的范围和我的字数已经是相当高的! 总结: 我想你在你的代码的一个函数,只有一个,看看会发生什么,当你在不同的数据类型和不同的价值观传递。 然后,我想你申请一些在这里讨论的过滤方法,看看是否有在您的代码如何执行差异。我很想知道你是怎么在评论。



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Apr 03, 2025 am 12:04 AM

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Apr 01, 2025 pm 03:12 PM

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...

Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Mar 28, 2025 pm 05:11 PM

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

See all articles