Alterações no parâmetro de injeção do construtor da API REST do Adobe Commerce - Guia do desenvolvedor do comerciante
O Adobe Commerce e o Magento Open Source introduziram alterações na maneira como as APIs REST lidam com a injeção de parâmetros do construtor. Essa atualização fortalece a estrutura da API da Web, garantindo que somente os tipos de dados apropriados sejam usados nas solicitações de API. Este artigo também responde a perguntas relacionadas ao CVE-2025-54236.
Descrição description
Ambientes
Adobe Commerce/Magento Open Source 2.4.4+, 2.4.5+, 2.4.6+, 2.4.7+, 2.4.8++, 2.4.9-alpha3 (todos os tipos de implantação)
Problema
Aprimoramento da validação do tipo de dados da API do Adobe Commerce - Guia do desenvolvedor do comerciante
Visão geral
O Adobe Commerce e o Magento Open Source introduziram alterações na maneira como as APIs REST lidam com a injeção de parâmetros do construtor. Essa atualização fortalece a estrutura da API da Web, garantindo que somente os tipos de dados apropriados sejam usados nas solicitações de API. Este artigo também responde a perguntas relacionadas ao CVE-2025-54236.
Novidades
Segurança de Tipo Aprimorada em APIs da Web
A partir do Adobe Commerce e do 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, a estrutura da API da Web agora implementa uma validação mais rigorosa do tipo de dados para parâmetros de construtor em solicitações de API. Essa alteração garante que:
✅ Tipos de dados simples (sequências, números inteiros, booleanos) continuam a funcionar perfeitamente.
✅ API As interfaces de dados (Api\Data\*Interface) permanecem com suporte completo.
🚫 Classes de serviço e modelos complexos não são mais instanciados automaticamente das cargas da API.
Detalhes técnicos
O que mudou
O ServiceInputProcessor agora valida os parâmetros do construtor com mais restrição durante o processamento de solicitação de API. O aprimoramento introduz uma camada de validação que verifica os tipos de parâmetros antes de tentar a instanciação do objeto. Especificamente, essa validação ocorre no método getConstructorData() quando o sistema tenta preencher os parâmetros do construtor dos dados de carga da API. Anteriormente, todos os tipos de parâmetros eram processados; agora, somente tipos aprovados são permitidos por meio de.
Tipos de dados permitidos
SUPORTADO (nenhuma alteração necessária):
Tipos simples
string- Valores de texto, nomes de produtos, descriçõesint/integer- Valores numéricos, quantidades, IDsfloat/double- Números decimais, preços, pesosbool/boolean- Valores verdadeiros/falsos, sinalizadores de status
Interfaces de Dados de API
- Todos
*\Api\Data\*Interfaceclasses
Integrações Possivelmente Afetadas
As integrações personalizadas que podem precisar de revisão incluem:
1. Extensões Personalizadas e Módulos de Terceiros
- Extensões enviando parâmetros de construtor não padrão
- Módulos que usam injeção de objeto complexo em cargas de API
- Endpoints de API personalizados com estruturas de parâmetros complexas
2. Testando Scripts
- Vários scripts de teste com cargas complexas
Resolução resolution
Guia de Migração
Auditoria de Chamadas de API
Fazer inventário das integrações atuais:
- Documentação da chamada de API: revise todos os pontos de extremidade de API documentados que seu aplicativo usa.
- Verificação do Repositório de Códigos: Pesquise na base de códigos por chamadas de API com objetos aninhados complexos.
- Análise de Tráfego de Rede: Monitore cargas de API reais que estão sendo enviadas para a Magento.
- Análise de Módulo de Terceiros: Verifique todas as extensões instaladas quanto ao uso da API.
Lista de Verificação de Identificação:
- Injeção de Parâmetro de Construtor: Procure objetos aninhados em cargas de API.
- Tipos de Objetos Complexos: Verifique se há referências a serviços ou classes de Modelo.
- Propriedades Personalizadas: Identifique quaisquer parâmetros de API não padrão.
- APIs específicas de extensão: Examine as implementações da API do módulo personalizado.
Solução de problemas
Mensagens de erro comuns
Nomes de Campos sem Suporte para > 2.4.6
{ "message": "\"{fieldName}\" is not supported. Correct the field name and try again." }
Nomes de Campos sem Suporte para < =2.4.6
{ "message": "Property \"{fieldName}\" does not have accessor method \"{methodName}\" in class \"{className}\"." }
Quando isso ocorrer:
- Parâmetros de construtor usando tipos complexos são rejeitados.
Etapas de Depuração
1. Verifique os logs de API no modo sem desenvolvedor (para < =2.4.6).
- Localização:
var/log/exception.log - Filtro: pesquise por
ServiceInputProcessorentradas. - Análise: procure detalhes de processamento do parâmetro.
2. Testar com 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"}}'
Compatibilidade de Versão
Compatibilidade com versões anteriores
- Embora as alterações mantenham compatibilidade geral com versões anteriores, alterações importantes podem ocorrer para parâmetros da API REST que são tipos complexos e não implementam as interfaces
Api\Data.
APIs existentes
- Todas as APIs padrão do Magento permanecem inalteradas.
- Nenhuma mudança radical na funcionalidade principal.
Extensões personalizadas
- Pode exigir atualizações se estiver usando injeção de construtor complexo.
- Teste recomendado antes da implantação em produção.
- Os desenvolvedores de extensão devem atualizar a documentação.
Integrações de terceiros
- Deve ser cuidadosamente testado.
- Entre em contato com os fornecedores para obter atualizações de compatibilidade.
- Monitore a integridade da integração após a atualização.
Perguntas frequentes
P: Preciso atualizar todas as minhas integrações de API imediatamente?
R: Somente as integrações que usam a injeção de parâmetro de construtor complexo precisam de atualizações. A maioria das chamadas de API padrão continua funcionando sem alterações. Priorize o teste e a atualização de integrações que usam objetos aninhados complexos em cargas da API.
P: Como posso identificar se minha integração foi afetada?
R: Teste chamadas de API em um ambiente de desenvolvimento com a nova versão.
P: Há alguma ferramenta para migrar automaticamente minhas chamadas de API?
R: Não há uma ferramenta de migração totalmente automatizada. A maioria dos casos envolve a remoção de objetos aninhados complexos e o uso de estruturas de dados de API adequadas.
P: O que acontece com as chamadas de API existentes que usaram injeção complexa?
R: Essas chamadas de API falharão com 400 Solicitação Inválida ou 500 Erro Interno do Servidor (para < =2.4.6).
P: Essa alteração afeta as APIs do GraphQL?
R: Não, esse aprimoramento se aplica somente às solicitações da API REST via ServiceInputProcessor. As APIs do GraphQL não são afetadas.
P: Posso desabilitar temporariamente essa validação para testes?
R: Não, essa validação é incorporada à estrutura principal e não pode ser desativada. Os testes podem ser feitos em versões mais antigas do Magento para verificar o comportamento herdado.
P: O que devo fazer se uma extensão de terceiros for afetada?
R: Entre em contato com o fornecedor para obter uma versão atualizada e compatível. Se não estiver disponível, considere alternativas ou trabalhe com um desenvolvedor para criar uma camada de compatibilidade.