文字列の最大長が未定義(OpenAPI 3.0)

長さの制限が必要な文字列にmaxLengthがない状態

説明

長さの制限が必要な文字列に maxLength または同等の制約がないと、スキーマ上は過度に長い値も許可される可能性があります。

想定される影響

サーバーも入力の長さを制限しない場合、大きな値によってメモリやストレージの使用量が増えたり、処理エラーが発生したりする可能性があります。

対処方法

業務要件に応じた maxLength を定義し、サーバーの上限と一致させてください。許可する値の一覧など、既存の制約ですでに長さが制限されているかも確認してください。

例

次のOpenAPI 3.0の抜粋では、code を最大15文字、message を最大255文字に制限しています。実際の上限は各フィールドの用途に合わせて決めてください。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 15
          },
          "message": {
            "type": "string",
            "maxLength": 255
          }
        }
      }
    }
  }
}

参考資料