説明
OpenAPI 2.0 の schemes に http があると、API が HTTP 通信に対応すると記載したことになります。認証情報や機密データを実際に HTTP で送信すると、通信経路上で内容を読み取られたり改ざんされたりする可能性があります。
操作ごとの schemes は全体の設定を上書きできます。schemes を省略すると、文書の取得に使った URL の通信方式が適用されます。仕様書の値だけでは、稼働中のサーバーの TLS 設定は分かりません。
想定される影響
- HTTP で送信したパスワード、トークン、個人情報が漏えいする可能性があります。
- 暗号化されていない要求や応答が改ざんされ、クライアントやサーバーが誤ったデータを処理する可能性があります。
対処方法
機密性のある通信には HTTPS を使用し、全体と操作ごとの schemes を実際に対応する方式に合わせてください。サーバーやゲートウェイの TLS、クライアントの証明書検証、平文の要求を拒否する設定も確認してください。HTTPS へのリダイレクトでは、すでに送信した最初の HTTP 要求は保護されません。
例
以下は全体の通信方式を比較する抜粋です。info など、文書に必要なその他の情報は省略しています。
変更前
json
{
"swagger": "2.0",
"schemes": [
"http"
],
"paths": {
"/": {
"get": {
"responses": {
"200": {
"description": "ok"
}
}
}
}
}
}
変更後
json
{
"swagger": "2.0",
"schemes": [
"https"
],
"paths": {
"/": {
"get": {
"responses": {
"200": {
"description": "ok"
}
}
}
}
}
}
変更後は HTTPS を明記しています。実際のサーバーとクライアントも HTTPS を使うように設定し、操作ごとの上書きも確認してください。