Änderungen an Parametern der Adobe Commerce REST-API-Konstruktor-Injektion - Merchant-Entwicklerhandbuch
Adobe Commerce und Magento Open Source haben Änderungen an der Art und Weise eingeführt, wie REST-APIs mit der Parametereinfügung von Konstruktoren umgehen. Diese Aktualisierung stärkt das Web-API-Framework, indem sichergestellt wird, dass in API-Anfragen nur geeignete Datentypen verwendet werden. Dieser Artikel beantwortet auch Fragen zu CVE-2025-54236.
Beschreibung description
Umgebungen
Adobe Commerce / Magento Open Source 2.4.4+, 2.4.5+, 2.4.6+, 2.4.7+, 2.4.8+, 2.4.9-Alpha3 (alle Bereitstellungstypen)
Problem
Adobe Commerce API-Datentypvalidierungsverbesserung - Merchant-Entwicklerhandbuch
Übersicht
Adobe Commerce und Magento Open Source haben Änderungen an der Art und Weise eingeführt, wie REST-APIs mit der Parametereinfügung von Konstruktoren umgehen. Diese Aktualisierung stärkt das Web-API-Framework, indem sichergestellt wird, dass in API-Anfragen nur geeignete Datentypen verwendet werden. Dieser Artikel beantwortet auch Fragen zu CVE-2025-54236.
Neue Funktionen
Verbesserte Typsicherheit in Web-APIs
Beginnend mit Adobe Commerce und Magento Open Source 2.4.4-p16, 2.4.5-p15, 2.4.6-p13, 2.4.7-p8, 2.4.8-p3 und 2.4.9-alpha3 implementiert das Web-API-Framework jetzt eine strengere Datentypvalidierung für Konstruktorparameter in API-Anfragen. Durch diese Änderung wird Folgendes sichergestellt:
✅ Einfache Datentypen (Zeichenfolgen, Ganzzahlen, Boolesche Werte) funktionieren weiterhin nahtlos.
✅ API-Datenschnittstellen (Api\Data\*Interface) werden weiterhin vollständig unterstützt.
🚫 Service-Klassen und komplexe Modelle werden nicht mehr automatisch von API-Payloads instanziiert.
Technische Details
Was hat sich geändert
Der ServiceInputProcessor validiert Konstruktorparameter jetzt während der Verarbeitung von API-Anfragen strenger. Die Verbesserung führt eine Validierungsebene ein, die Parametertypen prüft, bevor versucht wird, eine Objektinstanziierung durchzuführen. Diese Validierung erfolgt insbesondere in der getConstructorData()-Methode, wenn das System versucht, Konstruktorparameter aus API-Payload-Daten zu befüllen. Zuvor wurden alle Parametertypen verarbeitet. Jetzt sind nur noch genehmigte Typen zulässig bis.
Zulässige Datentypen
UNTERSTÜTZT (Keine Änderungen erforderlich):
Einfache Typen
string- Textwerte, Produktnamen, Beschreibungenint/integer- Numerische Werte, Mengen, IDsfloat/double- Dezimalzahlen, Preise, Gewichtebool/boolean- TRUE/FALSE-Werte, Status-Flags
API-Datenschnittstellen
- Alle
*\Api\Data\*Interface
Potenziell betroffene Integrationen
Zu den benutzerdefinierten Integrationen, die möglicherweise überprüft werden müssen, gehören:
1. Benutzerdefinierte Erweiterungen und Module von Drittanbietern
- Erweiterungen, die nicht standardmäßige Konstruktorparameter senden
- Module, die komplexe Objekteinfügungen in API-Payloads verwenden
- Benutzerdefinierte API-Endpunkte mit komplexen Parameterstrukturen
2. Testen von Skripten
- Verschiedene Testskripte mit komplexen Payloads
Auflösung resolution
Migrationshandbuch
API-Aufrufe überprüfen
Bestand der aktuellen Integrationen:
- Dokumentation zu API-Aufrufen: Überprüfen Sie alle dokumentierten API-Endpunkte, die Ihre Anwendung verwendet.
- Code-Repository-Suche Durchsuchen Sie die Codebasis nach API-Aufrufen mit komplexen verschachtelten Objekten.
- Analyse des Netzwerk-Traffics: Überwachen Sie die tatsächlichen API-Payloads, die an Magento gesendet werden.
- Überprüfung von Drittanbietermodulen: Überprüfen Sie alle installierten Erweiterungen auf API-Nutzung.
Identifizierungs-Checkliste:
- Einfügen von Konstruktorparametern: Suchen Sie nach verschachtelten Objekten in API-Payloads.
- Komplexe Objekttypen: Sie nach Verweisen auf Modellklassen oder Dienste.
- Benutzerdefinierte Eigenschaften: Identifizieren Sie alle nicht standardmäßigen API-Parameter.
- Erweiterungsspezifische APIs: Überprüfen Sie API-Implementierungen für benutzerdefinierte Module.
Fehlerbehebung
Häufige Fehlermeldungen
Nicht unterstützte Feldnamen für > 2.4.6
{ "message": "\"{fieldName}\" is not supported. Correct the field name and try again." }
Nicht unterstützte Feldnamen für < =2.4.6
{ "message": "Property \"{fieldName}\" does not have accessor method \"{methodName}\" in class \"{className}\"." }
Wenn dies eintritt:
- Konstruktorparameter, die komplexe Typen verwenden, werden zurückgewiesen.
Debugging-Schritte
1. Überprüfen Sie API-Protokolle, wenn Sie sich im Nicht-Entwicklermodus befinden (für < =2.4.6).
- Speicherort:
var/log/exception.log - Filter: Nach
ServiceInputProcessorEinträgen suchen. - Analyse: Suchen Sie nach Details zur Parameterverarbeitung.
2. Testen mit Postman/cURL.
# Test individual API calls curl -X POST "https://your-magento-site.com/rest/V1/products" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"product":{"sku":"TEST","name":"Test Product"}}'
Versionskompatibilität
Abwärtskompatibilität
- Während die Änderungen die Abwärtskompatibilität insgesamt aufrechterhalten, können grundlegende Änderungen bei REST-API-Parametern auftreten, die komplexe Typen sind und die
Api\Datanicht implementieren.
Vorhandene APIs
- Alle standardmäßigen Magento-APIs bleiben unverändert.
- Keine grundlegenden Änderungen an der Kernfunktionalität.
Benutzerdefinierte Erweiterungen
- Bei Verwendung der komplexen Konstruktor-Injektion kann eine Aktualisierung erforderlich sein.
- Vor der Produktionsbereitstellung werden Tests empfohlen.
- Erweiterungsentwickler sollten die Dokumentation aktualisieren.
Integrationen von Drittanbietern
- Sollte gründlich getestet werden.
- Kontaktieren Sie die Anbieter für Kompatibilitätsaktualisierungen.
- Überwachen des Integrationszustands nach dem Upgrade.
FAQs
F: Muss ich alle meine API-Integrationen sofort aktualisieren?
A: Nur Integrationen, die komplexe Konstruktor-Parameter verwenden, müssen aktualisiert werden. Die meisten Standard-API-Aufrufe funktionieren weiterhin ohne Änderungen. Priorisieren Sie das Testen und Aktualisieren von Integrationen, die komplexe verschachtelte Objekte in API-Payloads verwenden.
F: Wie kann ich feststellen, ob meine Integration betroffen ist?
A: Testen von API-Aufrufen in einer Entwicklungsumgebung mit der neuen Version.
F: Gibt es ein Tool zum automatischen Migrieren meiner API-Aufrufe?
A.: Es gibt kein vollständig automatisiertes Migrations-Tool. In den meisten Fällen müssen komplexe verschachtelte Objekte entfernt und geeignete API-Datenstrukturen verwendet werden.
F: Was passiert mit vorhandenen API-Aufrufen, die komplexe Injektion verwendet haben?
A: Diese API-Aufrufe schlagen mit 400 Fehlerhafte Anfrage oder 500 Interner Server-Fehler fehl (für < =2.4.6).
F: Wirkt sich diese Änderung auf GraphQL-APIs aus?
A: Nein, diese Verbesserung gilt nur für REST-API-Anfragen über ServiceInputProcessor. GraphQL-APIs sind davon nicht betroffen.
F: Kann ich diese Validierung für Tests vorübergehend deaktivieren?
A: Nein, diese Validierung ist in das Core-Framework integriert und kann nicht deaktiviert werden. Tests können für ältere Magento-Versionen durchgeführt werden, um das veraltete Verhalten zu überprüfen.
F: Was sollte ich tun, wenn eine Erweiterung eines Drittanbieters betroffen ist?
A: Wenden Sie sich an den Anbieter, um eine aktualisierte, kompatible Version zu erhalten. Falls nicht verfügbar, sollten Sie Alternativen in Betracht ziehen oder mit einem Entwickler zusammenarbeiten, um eine Kompatibilitätsebene zu erstellen.