Adobe Commerce REST API constructor parameterinjectiewijzigingen - Handleiding voor Merchant Developer

Adobe Commerce en Magento Open Source hebben wijzigingen aangebracht in de manier waarop REST API's constructorparameterinjectie verwerken. Deze update versterkt het Web API-framework door ervoor te zorgen dat alleen de juiste gegevenstypen worden gebruikt in API-aanvragen. Dit artikel beantwoordt ook vragen met betrekking tot CVE-2025-54236.

Beschrijving description

Omgevingen

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 implementatietypen)

Uitgave

Verbetering voor validatie van Adobe Commerce API-gegevenstypen - Handelaar Developer Guide

Overzicht

Adobe Commerce en Magento Open Source hebben wijzigingen aangebracht in de manier waarop REST API's constructorparameterinjectie verwerken. Deze update versterkt het Web API-framework door ervoor te zorgen dat alleen de juiste gegevenstypen worden gebruikt in API-aanvragen. Dit artikel beantwoordt ook vragen met betrekking tot CVE-2025-54236.

wat Nieuw is

Verbeterde Veiligheid van het Type in Web APIs

Vanaf Adobe Commerce en Magento Open Source 2.4.4-p16, 2.4.5-p15, 2.4.6-p13, 2.4.7-p8, 2.4.8-p3 en 2.4.9-alpha3, implementeert het Web API-framework nu strengere gegevenstypevalidatie voor constructorparameters in API-aanvragen. Deze wijziging zorgt ervoor dat:

✅ Eenvoudige gegevenstypen (tekenreeksen, gehele getallen, booleans) werken nog steeds naadloos.
✅ API-gegevensinterfaces (Api\Data\*Interface) worden nog steeds volledig ondersteund.
🚫 Serviceklassen en complexe modellen worden niet meer automatisch geïnstantieerd via API-ladingen.

Technische Details

wat veranderde

ServiceInputProcessor valideert nu constructorparameters strikter tijdens de verwerking van API-aanvragen. De uitbreiding introduceert een validatielaag die parametertypen controleert voordat er wordt geprobeerd een instantie van het object te maken. Deze validatie vindt met name plaats in de methode getConstructorData() wanneer het systeem probeert constructorparameters te vullen met API-payload-gegevens. Eerder, werden alle parametertypes verwerkt; nu slechts worden goedgekeurde types toegestaan door. 

Toegestane Types van Gegevens

STEUNDE (Geen vereiste veranderingen):

Eenvoudige Types

  • string - Tekstwaarden, productnamen, beschrijvingen
  • int / integer - Numerieke waarden, hoeveelheden, id's
  • float / double - Decimale getallen, prijzen, gewichten
  • bool / boolean - Waar/onwaar-waarden, statusmarkeringen

Interfaces van Gegevens API

  • Alles  *\Api\Data\*Interface -klassen

potentieel beïnvloede Integraties

Aangepaste integratie die mogelijk moet worden gecontroleerd, zijn onder andere:

1. Aangepaste extensies en modules van derden

  • Extensies die niet-standaard constructorparameters verzenden
  • Modules die complexe objectinjectie gebruiken in API-ladingen
  • Aangepaste API-eindpunten met complexe parameterstructuren

2. Scripts testen

  • Verschillende testscripts met complexe ladingen

Resolutie resolution

Gids van de Migratie

Controle Uw API Vraag

Huidige Integraties van de Inventaris:

  1. de Documentatie van de Vraag van API: herzie alle gedocumenteerde API eindpunten uw toepassingsgebruik.
  2. Scannen van de Bewaarplaats van de Code: Onderzoek codebase voor API vraag met complexe genestelde voorwerpen.
  3. Analyse van het Verkeer van het Netwerk: controleer daadwerkelijke API ladloads die naar Magento worden verzonden.
  4. het Overzicht van de Module van de Derde: Controle alle geïnstalleerde uitbreidingen voor API gebruik.

Controlelijst van de Identificatie:

  • Injectie van de Parameter van de Constructor: zoek genestelde voorwerpen in API nuttige ladingen.
  • de Complexe Types van Objecten: Controle voor verwijzingen naar Model klassen of de diensten.
  • Eigenschappen van de Douane: identificeer om het even welke niet standaardAPI parameters.
  • uitbreiding-specifieke APIs: de implementaties van de douane van de module van het overzicht API.

Problemen oplossen

Gemeenschappelijke Berichten van de Fout

Niet gesteunde Namen van het Gebied voor > 2.4.6

{ "message": "\"{fieldName}\" is not supported. Correct the field name and try again." }

Niet gesteunde Namen van het Gebied voor < =2.4.6

{ "message": "Property \"{fieldName}\" does not have accessor method \"{methodName}\" in class \"{className}\"." }

wanneer dit voorkomt:

  • Constructorparameters die gebruikmaken van complexe typen worden afgewezen.

het Zuiveren Stappen  

1. Controleer de API-logbestanden in de niet-ontwikkelaarsmodus (voor < =2.4.6).

  • Locatie: var/log/exception.log
  • Filter: zoek naar ServiceInputProcessor items.
  • Analyse: zoek naar details over parameterverwerking.

2. Testen met 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"}}'

Verenigbaarheid van de Versie

Achterwaartse Verenigbaarheid

  • Hoewel de wijzigingen algemene achterwaartse compatibiliteit behouden, kunnen onderbrekingswijzigingen optreden voor REST API-parameters die complexe typen zijn en de Api\Data -interfaces niet implementeren.

Bestaande APIs

  • Alle standaard Magento API's blijven ongewijzigd.
  • Wijzigingen in de kernfunctionaliteit zijn niet doorbroken.

de Uitbreidingen van de Douane

  • Mogelijk moeten updates worden uitgevoerd als u een complexe constructorinjectie gebruikt.
  • Testen aanbevolen voor implementatie van de productie.
  • Extensieontwikkelaars moeten de documentatie bijwerken.

Integraties van de Derde

  • Dient grondig te worden getest.
  • Neem contact op met leveranciers voor compatibiliteitsupdates.
  • De integratiestatus na de upgrade controleren.

Veelgestelde vragen

Q: Moet ik al mijn API integratie onmiddellijk bijwerken?
A: Alleen integraties die gebruikmaken van de injectie met complexe constructorparameters hebben updates nodig. De meeste standaard API-aanroepen blijven zonder wijzigingen werken. Prioriteit geven aan het testen en bijwerken van integratie die complexe geneste objecten in API-ladingen gebruiken.

Q: Hoe kan ik identificeren als mijn integratie wordt beïnvloed?
A: Test API-aanroepen in een ontwikkelomgeving met de nieuwe versie.

Q: Is er een hulpmiddel om mijn API vraag automatisch te migreren?
A: Er is geen volledig geautomatiseerd migratiehulpmiddel. In de meeste gevallen worden complexe geneste objecten verwijderd en worden de juiste API-gegevensstructuren gebruikt.

Q: Wat gebeurt met bestaande API vraag die complexe injectie gebruikte?
A: Die API vraag zal met 400 Onjuiste Verzoek of 500 Interne Fout van de Server (voor < =2.4.6) ontbreken.

Q: Is deze verandering GraphQL APIs van invloed?
A: Nee, deze verbetering is alleen van toepassing op REST API-aanvragen via ServiceInputProcessor . GraphQL API's blijven ongewijzigd.

Q: Kan ik deze bevestiging voor het testen tijdelijk onbruikbaar maken?
A: Nee, deze validatie is ingebouwd in het kernframework en kan niet worden uitgeschakeld. Het testen kan op oudere versies van Magento worden gedaan om erfenisgedrag te verifiëren.

Q: Wat zou ik moeten doen als een derdeuitbreiding wordt beïnvloed?
A: Neem contact op met de leverancier voor een bijgewerkte, compatibele versie. Indien niet beschikbaar, overweeg alternatieven of werk met een ontwikkelaar om een verenigbaarheidslaag tot stand te brengen.

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