数値の最大値が未定義(OpenAPI 3.0)

上限が必要な数値フィールドにmaximumの制約がない状態

説明

数量や金額など、上限が必要な数値フィールドに maximum または同等の制約がないと、業務上の許容範囲を超えた値もスキーマの検証を通る可能性があります。

想定される影響

サーバーも上限を検証しない場合、過度に大きな値によって計算エラーや処理の失敗が生じる可能性があります。

対処方法

許容範囲に合わせて maximum を定義し、サーバーでも同じ上限を検証してください。許可する値の一覧や参照先のスキーマに、すでに上限が定義されているかも確認してください。

例

次のOpenAPI 3.0の抜粋では、code の既存の最小値0に最大値50を追加しています。50は、この例で想定する業務上の上限です。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 50
          }
        }
      }
    }
  }
}

参考資料