Modifiche all’iniezione del parametro del costruttore API REST di Adobe Commerce - Guida per gli sviluppatori di Merchant

Adobe Commerce e Magento Open Source hanno introdotto modifiche al modo in cui le API REST gestiscono l’iniezione dei parametri del costruttore. Questo aggiornamento rafforza il framework API web garantendo che solo i tipi di dati appropriati vengano utilizzati nelle richieste API. Questo articolo risponde anche a domande relative a CVE-2025-54236.

Descrizione description

Ambienti

Adobe Commerce / Magento Open Source 2.4.4+, 2.4.5+, 2.4.6+, 2.4.7+, 2.4.8+, 2.4.9-alpha3 (tutti i tipi di distribuzione)

Problema

Miglioramento della convalida del tipo di dati API di Adobe Commerce - Guida per gli sviluppatori di esercenti

Panoramica

Adobe Commerce e Magento Open Source hanno introdotto modifiche al modo in cui le API REST gestiscono l’iniezione dei parametri del costruttore. Questo aggiornamento rafforza il framework API web garantendo che solo i tipi di dati appropriati vengano utilizzati nelle richieste API. Questo articolo risponde anche a domande relative a CVE-2025-54236.

Novità

Sicurezza avanzata dei tipi nelle API Web

A partire da Adobe Commerce e Magento Open Source 2.4.4-p16, 2.4.5-p15, 2.4.6-p13, 2.4.7-p8, 2.4.8-p3 e 2.4.9-alpha3, il framework API Web ora implementa una convalida del tipo di dati più rigorosa per i parametri del costruttore nelle richieste API. Questa modifica garantisce che:

✅ I tipi di dati semplici (stringhe, interi, booleani) continuano a funzionare senza problemi.
✅ interfacce dati API (Api\Data\*Interface) rimangono completamente supportate.
Le classi di servizio 🚫 e i modelli complessi non vengono più creati automaticamente dai payload API.

Dettagli tecnici

Modifiche apportate

ServiceInputProcessor ora convalida i parametri del costruttore in modo più rigoroso durante l'elaborazione della richiesta API. Questo miglioramento introduce un livello di convalida che controlla i tipi di parametri prima di tentare la creazione di istanze di oggetti. Nello specifico, questa convalida si verifica nel metodo getConstructorData() quando il sistema tenta di popolare i parametri del costruttore dai dati del payload API. In precedenza, tutti i tipi di parametri venivano elaborati. Ora solo i tipi approvati sono consentiti tramite. 

Tipi di dati consentiti

SUPPORTATO (nessuna modifica richiesta):

Tipi semplici

  • string - Valori di testo, nomi di prodotto, descrizioni
  • int / integer - Valori numerici, quantità, ID
  • float / double - Numeri decimali, prezzi, pesi
  • bool / boolean - Valori True/False, flag di stato

Interfacce dati API

  • Tutti  *\Api\Data\*Interface classi

Integrazioni potenzialmente interessate

Le integrazioni personalizzate che potrebbero richiedere una revisione includono:

1. Estensioni personalizzate e moduli di terze parti

  • Estensioni che inviano parametri di costruzione non standard
  • Moduli che utilizzano l’iniezione di oggetti complessi nei payload API
  • Endpoint API personalizzati con strutture di parametri complesse

2. Verifica degli script

  • Vari script di test con payload complessi

Risoluzione resolution

Guida alla migrazione

Controlla le chiamate API

Integrazioni correnti inventario:

  1. Documentazione delle chiamate API: Controlla tutti gli endpoint API documentati utilizzati dall'applicazione.
  2. Analisi archivio codici: Cercare nella base di codice le chiamate API con oggetti nidificati complessi.
  3. Analisi del traffico di rete: monitorare i payload API effettivi inviati a Magento.
  4. Revisione modulo di terze parti: verifica l'utilizzo delle API in tutte le estensioni installate.

Elenco di controllo per l'identificazione:

  • Iniezione parametro costruttore: Cerca oggetti nidificati nei payload API.
  • Tipi di oggetto complessi: Verificare la presenza di riferimenti a classi o servizi modello.
  • Proprietà personalizzate: Identificare eventuali parametri API non standard.
  • API specifiche per l'estensione: Rivedi le implementazioni API dei moduli personalizzati.

Risoluzione dei problemi

Messaggi di errore comuni

Nomi di campo non supportati per > 2.4.6

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

Nomi di campo non supportati per < =2.4.6

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

In questo caso:

  • I parametri di costruzione che utilizzano tipi complessi vengono rifiutati.

Passaggi del debug 

1. Controllare i registri API in modalità non sviluppatore (per < =2.4.6).

  • Percorso: var/log/exception.log
  • Filtro: cerca ServiceInputProcessor voci.
  • Analisi: cerca i dettagli di elaborazione dei parametri.

2. Test con 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"}}'

Compatibilità versione

Compatibilità con le versioni precedenti

  • Anche se le modifiche mantengono la compatibilità generale con le versioni precedenti, possono verificarsi modifiche di interruzione per i parametri API REST che sono tipi complessi e non implementano le interfacce Api\Data.

API esistenti

  • Tutte le API Magento standard rimangono invariate.
  • Nessuna modifica sostanziale alle funzionalità di base.

Estensioni personalizzate

  • Può essere necessario eseguire aggiornamenti se si utilizza l’iniezione di un costruttore complesso.
  • Test consigliati prima della distribuzione nell’ambiente di produzione.
  • Gli sviluppatori di estensioni devono aggiornare la documentazione.

Integrazioni di terze parti

  • Deve essere testato accuratamente.
  • Contattare i fornitori per aggiornamenti sulla compatibilità.
  • Monitorare l’integrità dell’integrazione dopo l’aggiornamento.

Domande frequenti

D: è necessario aggiornare immediatamente tutte le integrazioni API?
R: solo le integrazioni che utilizzano l’iniezione di parametri di costruttori complessi devono essere aggiornate. La maggior parte delle chiamate API standard continua a funzionare senza modifiche. Dai priorità alle integrazioni di test e aggiornamento che utilizzano oggetti nidificati complessi nei payload API.

D: come posso identificare se la mia integrazione è interessata?
R: Test delle chiamate API in un ambiente di sviluppo con la nuova versione.

D: esiste uno strumento per migrare automaticamente le chiamate API?
R: Non esiste uno strumento di migrazione completamente automatizzato. La maggior parte dei casi comporta la rimozione di oggetti nidificati complessi e l’utilizzo di strutture di dati API appropriate.

D: cosa succede alle chiamate API esistenti che hanno utilizzato l'iniezione complessa?
R: Queste chiamate API avranno esito negativo con 400 Richiesta non valida o 500 Errore interno del server (per < =2.4.6).

D: questa modifica influisce sulle API di GraphQL?
R: No, questo miglioramento si applica solo alle richieste REST API tramite ServiceInputProcessor. Le API di GraphQL non subiscono modifiche.

D: posso disabilitare temporaneamente questa convalida per il test?
R: No, questa convalida è incorporata nel framework di base e non può essere disabilitata. Puoi eseguire test sulle versioni precedenti di Magento per verificare il comportamento legacy.

D: cosa devo fare se è interessata un'estensione di terze parti?
R: Contattare il fornitore per ottenere una versione aggiornata e compatibile. Se non disponibile, valuta alternative o collabora con uno sviluppatore per creare un livello di compatibilità.

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