Injektionsändringar för Adobe Commerce REST API-konstruktorparametrar - Handbok för marknadsföringsutveckling
Adobe Commerce och Magento Open Source har förändrat sättet på vilket REST API:er hanterar inmatning av konstruktorparametrar. Den här uppdateringen stärker webb-API-ramverket genom att säkerställa att endast lämpliga datatyper används i API-begäranden. Den här artikeln innehåller även frågor om CVE-2025-54236.
Beskrivning description
Miljö
Adobe Commerce/Magento Open Source 2.4.4+, 2.4.5+, 2.4.6+, 2.4.7+, 2.4.8+, 2.4.9-alpha3 (alla distributionstyper)
Problem
Förbättring av datatypvalidering för Adobe Commerce API - Handbok för utvecklare av marknadsföring
Översikt
Adobe Commerce och Magento Open Source har förändrat sättet på vilket REST API:er hanterar inmatning av konstruktorparametrar. Den här uppdateringen stärker webb-API-ramverket genom att säkerställa att endast lämpliga datatyper används i API-begäranden. Den här artikeln innehåller även frågor om CVE-2025-54236.
Nyheter
Förbättrad typsäkerhet i webb-API:er
Från och med Adobe Commerce och Magento Open Source 2.4.4-p16, 2.4.5-p15, 2.4.6-p13, 2.4.7-p8, 2.4.8-p3 och 2.4.9-alpha3 implementerar Web API-ramverket nu striktare datatypsvalidering för konstruktorparametrar i API-begäranden. Ändringen säkerställer att:
✅ Enkla datatyper (strängar, heltal, booleska) fortsätter att fungera sömlöst.
✅ API-datagränssnitt (Api\Data\*Interface) stöds fortfarande.
🚫 tjänstklasser och komplexa modeller instansieras inte längre automatiskt från API-nyttolaster.
Teknisk information
Vad har ändrats
ServiceInputProcessor validerar nu konstruktorparametrar mer strikt under bearbetning av API-begäran. Förbättringen introducerar ett valideringslager som kontrollerar parametertyper innan objektinstansiering görs. Den här valideringen görs i metoden getConstructorData() när systemet försöker fylla i konstruktorparametrar från API-nyttolastdata. Tidigare bearbetades alla parametertyper. Nu tillåts bara godkända typer till och med.
Tillåtna datatyper
STÖDS (Inga ändringar krävs):
Enkla typer
string- Textvärden, produktnamn, beskrivningarint/integer- Numeriska värden, kvantiteter, IDfloat/double- Decimaltal, priser, vikterbool/boolean- True/false-värden, statusflaggor
API-datagränssnitt
- Alla
*\Api\Data\*Interfaceklasser
Integrationer som kan påverkas
Anpassade integreringar som kan behöva granskas inkluderar:
1. Anpassade tillägg och tredjepartsmoduler
- Tillägg som skickar konstruktorparametrar som inte är standard
- Moduler som använder avancerad objektinmatning i API-nyttolaster
- Anpassade API-slutpunkter med komplexa parameterstrukturer
2. Testar skript
- Olika testskript med komplexa nyttolaster
Upplösning resolution
Migreringshandbok
Granska dina API-anrop
Inventera aktuella integreringar:
- API-samtalsdokumentation: Granska alla dokumenterade API-slutpunkter som programmet använder.
- Koddatabasgenomsökning: Sök i kodbasen efter API-anrop med komplexa kapslade objekt.
- Nätverkstrafikanalys: Övervaka faktiska API-nyttolaster som skickas till Magento.
- Modulgranskning från tredje part: Kontrollera alla installerade tillägg för API-användning.
Checklista för identifiering:
- Konstruktorparameterinmatning: Leta efter kapslade objekt i API-nyttolaster.
- Komplexa objekttyper: Kontrollera om det finns referenser till modellklasser eller -tjänster.
- Anpassade egenskaper: Identifiera alla API-parametrar som inte är standard.
- Tilläggsspecifika API Granska implementeringar av API:er för anpassade moduler.
Felsökning
Vanliga felmeddelanden
Fältnamn som inte stöds för > 2.4.6
{ "message": "\"{fieldName}\" is not supported. Correct the field name and try again." }
Fältnamn som inte stöds för < =2.4.6
{ "message": "Property \"{fieldName}\" does not have accessor method \"{methodName}\" in class \"{className}\"." }
När detta inträffar:
- Konstruktorparametrar som använder komplexa typer nekas.
Felsökningssteg
1. Kontrollera API-loggar i icke-utvecklarläge (för < =2.4.6).
- Plats:
var/log/exception.log - Filter: Sök efter
ServiceInputProcessorposter. - Analys: Sök efter information om parameterbearbetning.
2. Testa med 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"}}'
Versionskompatibilitet
Bakåtkompatibilitet
- Även om ändringarna behåller den övergripande bakåtkompatibiliteten kan det uppstå brytningsändringar för REST API-parametrar som är komplexa typer och inte implementerar
Api\Data-gränssnitten.
Befintliga API:er
- Alla standardprogrammeringsgränssnitt för Magento förblir oförändrade.
- Inga större förändringar i kärnfunktionerna.
Anpassade tillägg
- Kan kräva uppdateringar om komplex konstruktorinjektion används.
- Testning rekommenderas före driftsättning.
- Tilläggsutvecklare bör uppdatera dokumentationen.
Integreringar från tredje part
- Ska testas noggrant.
- Kontakta leverantörer för kompatibilitetsuppdateringar.
- Övervaka integreringshälsan efter uppgraderingen.
Vanliga frågor och svar
F: Måste jag uppdatera alla mina API-integreringar omedelbart?
S: Endast integreringar som använder komplexa konstruktorparametrar för inmatning behöver uppdateras. De flesta standard-API-anrop fortsätter att fungera utan ändringar. Prioritera testning och uppdatering av integreringar som använder komplexa kapslade objekt i API-nyttolaster.
F: Hur identifierar jag om min integrering påverkas?
S: Testa API-anrop i en utvecklingsmiljö med den nya versionen.
F: Finns det något verktyg för att automatiskt migrera mina API-anrop?
S: Det finns inget helt automatiserat migreringsverktyg. De flesta fall handlar om att ta bort komplexa kapslade objekt och använda rätt API-datastrukturer.
F: Vad händer med befintliga API-anrop som använde komplex injektion?
S: Dessa API-anrop misslyckas med 400 Ogiltig begäran eller 500 internt serverfel (för < =2.4.6).
F: Påverkar den här ändringen GraphQL API:er?
S: Nej, den här förbättringen gäller bara för REST API-begäranden via ServiceInputProcessor. GraphQL API:er påverkas inte.
F: Kan jag tillfälligt inaktivera den här valideringen för testning?
S: Nej, den här valideringen är inbyggd i kärnramverket och kan inte inaktiveras. Testning kan göras på äldre Magento-versioner för att verifiera äldre beteenden.
F: Vad ska jag göra om ett tillägg från tredje part påverkas?
S: Kontakta leverantören för en uppdaterad, kompatibel version. Om alternativet inte är tillgängligt kan du överväga alternativ eller arbeta med en utvecklare för att skapa ett kompatibilitetslager.