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

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

説明

負の値を許可しない数量など、下限が必要な数値フィールドに minimum または同等の制約がないと、許容範囲を下回る値もスキーマの検証を通る可能性があります。

想定される影響

サーバーも下限を検証しない場合、無効な値によって計算や業務処理のエラーが生じる可能性があります。

対処方法

フィールドの用途に合う minimum を定義し、サーバーの検証と一致させてください。負の値が有効なフィールドまで一律に0以上に制限しないでください。

例

次のOpenAPI 3.0の抜粋では、minimum: 0 によって code に負の値を許可しないことを明示しています。

変更前

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

変更後

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

参考資料