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, beschrijvingenint/integer- Numerieke waarden, hoeveelheden, id'sfloat/double- Decimale getallen, prijzen, gewichtenbool/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:
- de Documentatie van de Vraag van API: herzie alle gedocumenteerde API eindpunten uw toepassingsgebruik.
- Scannen van de Bewaarplaats van de Code: Onderzoek codebase voor API vraag met complexe genestelde voorwerpen.
- Analyse van het Verkeer van het Netwerk: controleer daadwerkelijke API ladloads die naar Magento worden verzonden.
- 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
ServiceInputProcessoritems. - 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.