Heim > Backend-Entwicklung > PHP-Tutorial > Wie die TrimStrings-Middleware von Laravel Probleme verursachen kann

Wie die TrimStrings-Middleware von Laravel Probleme verursachen kann

WBOY
Freigeben: 2024-08-19 20:35:03
Original
945 Leute haben es durchsucht

How Laravel

Laravel ist ein beliebtes Framework in der PHP-Welt und bietet Entwicklern großartige Tools, um ihre Arbeit zu vereinfachen. Allerdings können diese Annehmlichkeiten manchmal zu unerwarteten Problemen führen. In diesem Beitrag bespreche ich, wie die TrimStrings-Middleware in Laravel Probleme verursachen kann und wie man sie löst.

Was ist die TrimStrings-Middleware und was macht sie?

Die TrimStrings-Middleware wird in Laravel-Anwendungen verwendet, um automatisch Leerzeichen aus eingehenden Anforderungsdaten, wie z. B. Formulareingaben, zu entfernen. Dies ist besonders nützlich, wenn Benutzer versehentlich Leerzeichen am Anfang oder Ende von Eingabefeldern hinterlassen. Wenn ein Benutzer beispielsweise „user@example.com“ mit Leerzeichen um die E-Mail-Adresse in ein Formular eingibt, schneidet die Middleware TrimStrings diese Leerzeichen ab und stellt so sicher, dass nur „user@example.com“ verarbeitet wird .

Diese Funktion ist nützlich, um Fehler zu vermeiden, die durch unnötige Leerzeichen verursacht werden, und um sauberere Daten zu verarbeiten. Allerdings kann dieses Standardverhalten wie immer in bestimmten Sonderfällen zu unbeabsichtigten Folgen führen.

Was ist passiert?

In einem Projekt, bei dem wir eine Integration mit einem in Brasilien ansässigen Zahlungsanbieter vornahmen, mussten wir Zahlungsergebnisse über ein Rückrufsystem erfassen und validieren. Der Zahlungsanbieter sendet das Transaktionsergebnis über eine POST-Anfrage an unseren Server und wir validieren die Anfrage, indem wir eine Signatur-/Hash-Verifizierung durchführen.

Dieser Verifizierungsprozess folgt einer einfachen Logik:

  1. Wir übernehmen die vom Anbieter übermittelten Daten.
  2. Alle Daten werden in einer einzigen Zeichenfolge verkettet.
  3. Diese Zeichenfolge wird mithilfe des SHA256-Algorithmus mit einem geheimen Schlüssel gehasht, der vom Zahlungsanbieter bereitgestellt wird.
  4. Der resultierende Hash wird mit dem vom Anbieter gesendeten Hash verglichen. Bei Übereinstimmung wird die Anfrage angenommen; andernfalls wird es abgelehnt.

Wie haben wir das Problem identifiziert?

Anfangs war es schwer zu verstehen, warum einige berechtigte Anträge abgelehnt wurden. Nach der Untersuchung der Nginx-Protokolle stellten wir jedoch fest, dass der Parameter full_name in der eingehenden Anfrage Leerzeichen am Ende enthielt. Trotzdem wurden diese Leerzeichen auf unserem Server gekürzt, was dazu führte, dass die Hash-Überprüfung fehlschlug. Da wurde uns klar, dass die TrimStrings-Middleware dieses Problem verursachte.

Was ist die Lösung?

Um solche Probleme zu vermeiden, ist es notwendig, die Middleware TrimStrings für bestimmte Routen oder Anfragen zu deaktivieren. Mit Laravel 8 wurde die Methode TrimStrings::skipWhen eingeführt, die eine maßgeschneiderte Lösung für diese Situation bietet.

Unten finden Sie ein Beispiel für die Anwendung dieser Lösung mithilfe eines Anbieters:

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

// ...

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

Dieses Code-Snippet deaktiviert die TrimStrings-Middleware für eine bestimmte Route. In diesem Fall erfolgt keine Kürzung für Anfragen, die von der Route api/v1/integrations/foo-provider/callback kommen, um sicherzustellen, dass der Hash-Überprüfungsprozess reibungslos funktioniert.

Abschluss

Die Standardfunktionen von Laravel erleichtern im Allgemeinen die Arbeit, können jedoch in bestimmten Szenarien zu unerwarteten Ergebnissen führen. Daher ist es wichtig zu verstehen, wie die von uns verwendeten Tools funktionieren, und ihre möglichen Auswirkungen sorgfältig zu bewerten. Obwohl die TrimStrings-Middleware in den meisten Fällen ein nützliches Tool ist, kann sie in solchen Szenarien Probleme verursachen. Glücklicherweise ermöglichen uns flexible Lösungen wie TrimStrings::skipWhen, solche Probleme zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie die TrimStrings-Middleware von Laravel Probleme verursachen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage