"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment le middleware TrimStrings de Laravel peut causer des problèmes

Comment le middleware TrimStrings de Laravel peut causer des problèmes

Publié le 2024-11-08
Parcourir:287

How Laravel

Laravel est un framework populaire dans le monde PHP, offrant aux développeurs d'excellents outils pour simplifier leur travail. Cependant, ces commodités peuvent parfois entraîner des problèmes inattendus. Dans cet article, j'expliquerai comment le middleware TrimStrings dans Laravel peut causer des problèmes et comment les résoudre.

Qu'est-ce que le middleware TrimStrings et que fait-il ?

Le middleware TrimStrings est utilisé dans les applications Laravel pour supprimer automatiquement les espaces des données de requête entrantes, telles que les entrées de formulaire. Ceci est particulièrement utile lorsque les utilisateurs laissent accidentellement des espaces au début ou à la fin des champs de saisie. Par exemple, si un utilisateur saisit « [email protected] » avec des espaces autour de l'adresse e-mail dans un formulaire, le middleware TrimStrings supprimera ces espaces, garantissant que seul « [email protected] » est traité. .

Cette fonctionnalité est utile pour éviter les erreurs causées par des espaces inutiles et pour gérer des données plus propres. Cependant, comme toujours, dans certains cas particuliers, ce comportement par défaut peut entraîner des conséquences inattendues.

Ce qui s'est passé?

Dans un projet dans lequel nous intégrions un fournisseur de paiement basé au Brésil, nous devions capturer et valider les résultats de paiement via un système de rappel. Le fournisseur de paiement envoie le résultat de la transaction à notre serveur via une requête POST, et nous validons la demande en effectuant une vérification de signature/hachage.

Ce processus de vérification suit une logique simple :

  1. Nous prenons les données envoyées par le fournisseur.
  2. Toutes les données sont concaténées en une seule chaîne.
  3. Cette chaîne est hachée à l'aide de l'algorithme SHA256 avec une clé secrète fournie par le fournisseur de paiement.
  4. Le hachage résultant est comparé au hachage envoyé par le fournisseur. S'ils correspondent, la demande est acceptée ; sinon, il est rejeté.

Comment avons-nous identifié le problème ?

Au départ, il était difficile de comprendre pourquoi certaines demandes valables étaient rejetées. Cependant, après avoir inspecté les journaux Nginx, nous avons remarqué que le paramètre full_name dans la requête entrante conservait les espaces de fin. Malgré cela, sur notre serveur, ces espaces avaient été réduits, provoquant l'échec de la vérification du hachage. C'est à ce moment-là que nous avons réalisé que le middleware TrimStrings était à l'origine de ce problème.

Quelle est la solution ?

Pour éviter de tels problèmes, il est nécessaire de désactiver le middleware TrimStrings pour des itinéraires ou des requêtes spécifiques. Laravel 8 a introduit la méthode TrimStrings::skipWhen, qui fournit une solution sur mesure pour cette situation.

Vous trouverez ci-dessous un exemple d'application de cette solution en utilisant un fournisseur :

use Illuminate\Foundation\Http\Middleware\TrimStrings;
use Illuminate\Http\Request;

// ...

TrimStrings::skipWhen(function (Request $request) {
    return $request->is('api/v1/integrations/foo-provider/callback');
});

Cet extrait de code désactive le middleware TrimStrings pour un itinéraire spécifique. Dans ce cas, la suppression n'aura pas lieu pour les requêtes provenant de la route api/v1/integrations/foo-provider/callback, garantissant ainsi le bon fonctionnement du processus de vérification du hachage.

Conclusion

Les fonctionnalités par défaut de Laravel facilitent généralement les choses, mais dans certains scénarios, elles peuvent conduire à des résultats inattendus. Il est donc important de comprendre le fonctionnement des outils que nous utilisons et d’évaluer soigneusement leurs impacts potentiels. Bien que le middleware TrimStrings soit un outil utile dans la plupart des cas, il peut provoquer des problèmes dans des scénarios comme celui-ci. Heureusement, des solutions flexibles comme TrimStrings::skipWhen nous permettent d'éviter de tels problèmes.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/yidemir/how-trimstrings-can-become-a-problem-for-you-in-laravel-o4k?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3