OpenAPI 2.0에 명시된 HTTP 전송

API 문서의 전송 방식과 실제 HTTPS 설정을 함께 확인하세요.

설명

OpenAPI 2.0의 schemes에 http가 있으면 API가 HTTP 전송을 지원한다고 명시한 것입니다. 실제로 인증정보나 민감한 데이터를 HTTP로 전송하면 통신 경로에서 내용을 읽거나 변조할 수 있습니다.

전역 schemes는 작업별 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를 사용하도록 구성하고 작업별 재정의를 확인해야 합니다.

참조