Ä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, Beschreibungen
  • int/integer - Numerische Werte, Mengen, IDs
  • float / double - Dezimalzahlen, Preise, Gewichte
  • bool/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:

  1. Dokumentation zu API-Aufrufen: Überprüfen Sie alle dokumentierten API-Endpunkte, die Ihre Anwendung verwendet.
  2. Code-Repository-Suche Durchsuchen Sie die Codebasis nach API-Aufrufen mit komplexen verschachtelten Objekten.
  3. Analyse des Netzwerk-Traffics: Überwachen Sie die tatsächlichen API-Payloads, die an Magento gesendet werden.
  4. Ü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 ServiceInputProcessor Einträ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\Data nicht 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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f