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, beskrivningar
  • int / integer - Numeriska värden, kvantiteter, ID
  • float / double - Decimaltal, priser, vikter
  • bool / boolean - True/false-värden, statusflaggor

API-datagränssnitt

  • Alla  *\Api\Data\*Interface klasser

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:

  1. API-samtalsdokumentation: Granska alla dokumenterade API-slutpunkter som programmet använder.
  2. Koddatabasgenomsökning: Sök i kodbasen efter API-anrop med komplexa kapslade objekt.
  3. Nätverkstrafikanalys: Övervaka faktiska API-nyttolaster som skickas till Magento.
  4. 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 ServiceInputProcessor poster.
  • 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.

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