OpenAPIの操作でHTTPを許可

操作ごとのschemesにHTTPを指定すると、その操作で平文通信を利用できることになります。

説明

OpenAPI 2.0では、getなどの操作にあるschemesが、全体の通信プロトコル設定を上書きします。ここにhttpを含めると、全体がHTTPSでも、その操作ではHTTPを選択できる仕様になります。

想定される影響

クライアントがHTTPのアドレスにリクエストを送ると、認証情報やレスポンスのデータが通信経路で漏えいしたり改ざんされたりするおそれがあります。

対処方法

操作のschemesからhttpを削除し、httpsを使用してください。操作ごとの上書きを削除して、全体のHTTPS設定を継承することもできます。実際のエンドポイントにもHTTPSを設定してください。

例

次の例では、GET /の通信プロトコルを変更します。schemesはPath Item自体ではなく、操作オブジェクトのプロパティです。

変更前

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "schemes": [
          "http"
        ],
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  }
}

変更後

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "schemes": [
          "https"
        ],
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  }
}

参考資料