Adobe Commerce REST API コンストラクターパラメーターの挿入の変更点 – Merchant Developer Guide
Adobe CommerceとMagento Open Sourceでは、REST API がコンストラクターパラメーターの挿入を処理する方法が変更されました。 この更新により、API リクエストで適切なデータタイプのみが使用されるようになり、web API フレームワークが強化されます。 この記事では、CVE-2025-54236 に関する質問にも回答します。
説明 description
環境
Adobe Commerce/Magento Open Source 2.4.4 以降、2.4.5 以降、2.4.6 以降、2.4.7 以降、2.4.8 以降、2.4.9-alpha3 (すべてのデプロイメントタイプ)
問題
Adobe Commerce API Data Type Validation の機能強化 – マーチャントデベロッパーガイド
概要
Adobe CommerceとMagento Open Sourceでは、REST API がコンストラクターパラメーターの挿入を処理する方法が変更されました。 この更新により、API リクエストで適切なデータタイプのみが使用されるようになり、web API フレームワークが強化されます。 この記事では、CVE-2025-54236 に関する質問にも回答します。
新機能
Web API でのタイプの安全性の強化
Adobe CommerceおよびMagento Open Source 2.4.4-p16、2.4.5-p15、2.4.6-p13、2.4.7-p8、2.4.8-p3 および 2.4.9-alpha3 以降、Web API フレームワークでは、API リクエストのコンストラクターパラメーターに対して、より厳密なデータタイプ検証を実装するようになりました。 この変更により、次のことが保証されます。
✅ シンプルなデータタイプ(文字列、整数、ブール値)は、引き続きシームレスに機能します。
✅ API データインターフェイス(Api\Data\*Interface)は引き続き完全にサポートされます。
🚫 サービスクラスと複雑なモデルは、API ペイロードから自動的にインスタンス化されなくなりました。
技術的詳細
変更点
ServiceInputProcessor は、API リクエストの処理中にコンストラクターパラメーターをより厳密に検証するようになりました。 この機能強化により、オブジェクトのインスタンス化を試みる前にパラメータータイプを確認する検証レイヤーが導入されます。 特に、この検証は、システムが API ペイロードデータからコンストラクターパラメーターを入力しようとすると、getConstructorData() メソッドで発生します。 以前は、すべてのパラメータータイプが処理されていましたが、現在は、承認されたタイプのみが を介して許可されます。
許可されるデータタイプ
サポート対象(変更は不要):
単純型
string- テキスト値、製品名、説明int/integer– 数値、数量、IDfloat/double– 十進数、価格、重みbool/boolean- True/False 値、ステータスフラグ
API データインターフェイス
- すべて
*\Api\Data\*Interfaceクラス
影響を受ける可能性のある統合
レビューが必要なカスタム統合には、次のものがあります。
1.カスタム拡張機能とサードパーティモジュール
- 非標準のコンストラクターパラメーターを送信する拡張機能
- API ペイロードでの複雑なオブジェクト挿入を使用したモジュール
- 複雑なパラメーター構造を持つカスタム API エンドポイント
2. スクリプト テスト
- 複雑なペイロードを含む様々なテストスクリプト
解決策 resolution
移行ガイド
API 呼び出しの監査
現在の統合のインベントリ:
- API 呼び出しのドキュメント: アプリケーションが使用するドキュメント化されたすべての API エンドポイントを確認します。
- コードリポジトリスキャン: 複雑なネストオブジェクトを含んだ API 呼び出しについて、コードベースを検索します。
- ネットワークトラフィック分析: Magentoに送信される実際の API ペイロードを監視します。
- サードパーティモジュールの確認: インストールされているすべての拡張機能で API の使用状況を確認します。
識別チェックリスト:
- コンストラクターパラメーターの挿入: API ペイロードでネストされたオブジェクトを検索します。
- 複合オブジェクトタイプ: モデルクラスまたはサービスへの参照を確認します。
- カスタムプロパティ: 非標準の API パラメーターを識別します。
- 拡張機能固有の API: カスタムモジュール API の実装を確認します。
トラブルシューティング
一般的なエラーメッセージ
> 2.4.6 でサポートされていないフィールド名
{ "message": "\"{fieldName}\" is not supported. Correct the field name and try again." }
< =2.4.6 でサポートされていないフィールド名
{ "message": "Property \"{fieldName}\" does not have accessor method \"{methodName}\" in class \"{className}\"." }
これが発生した場合:
- 複合型を使用するコンストラクターパラメーターは拒否されます。
デバッグ手順
1.非デベロッパーモードの場合は、API ログを確認してください(<:2.4.6)。
- 場所:
var/log/exception.log - フィルター:
ServiceInputProcessorエントリを検索します。 - 分析:パラメーター処理の詳細を探します。
2. 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"}}'
バージョンの互換性
下位互換性
- 変更により全体的な後方互換性は維持されますが、
Api\Dataしいインターフェイスを実装していない複雑なタイプの REST API パラメーターでは重大な変更が発生する場合があります。
既存の API
- すべての標準Magento API に変更はありません。
- コア機能に重大な変更はありません。
カスタム拡張機能
- 複雑なコンストラクターの挿入を使用している場合は、更新が必要になる場合があります。
- 実稼動デプロイメントの前に推奨されるテスト。
- 拡張機能の開発者は、ドキュメントを更新する必要があります。
サードパーティの統合
- 十分にテストする必要があります。
- 互換性の更新については、ベンダーにお問い合わせください。
- アップグレード後の統合ヘルスを監視します。
FAQ
Q:すべての API 統合をすぐに更新する必要がありますか。
A:更新が必要なのは、複雑なコンストラクターパラメーターの挿入を使用する統合のみです。 ほとんどの標準 API 呼び出しは、変更を加えずに引き続き機能します。 API ペイロードで複雑なネストされたオブジェクトを使用する統合のテストと更新に優先順位を付けます。
Q:統合が影響を受けるかどうかを特定するにはどうすればよいですか?
A:新しいバージョンの開発環境で API 呼び出しをテストします。
Q:API 呼び出しを自動的に移行するツールはありますか?
A:完全に自動化された移行ツールはありません。 ほとんどの場合、複雑なネストされたオブジェクトを削除し、適切な API データ構造を使用することが必要です。
Q:複雑な挿入を使用した既存の API 呼び出しはどうなりますか?
回答:これらの API 呼び出しは、400 無効なリクエスト または 500 内部サーバーエラー (<:2.4.6)で失敗します。
Q:この変更はGraphQL API に影響しますか?
A:いいえ。この機能強化は、ServiceInputProcessor を介した REST API リクエストにのみ適用されます。 GraphQL API は影響を受けません。
Q:この検証をテストのために一時的に無効にできますか?
回答:いいえ。この検証はコアフレームワークに組み込まれており、無効にはできません。 古いバージョンのMagentoでテストを実行して、従来の動作を検証できます。
Q:サードパーティの拡張機能が影響を受ける場合はどうすればよいですか?
A:最新の互換性のあるバージョンについては、ベンダーにお問い合わせください。 使用できない場合は、代替手段を検討するか、開発者に問い合わせて互換性レイヤーを作成してください。