> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ko/self-hosted/inference-server/configuration/input-formats.md).

# 허용되는 입력 형식

자체 호스팅 Roboflow Inference 서버가 허용하는 입력 형식과, pickled numpy 페이로드 및 URL 이미지 가져오기와 같은 덜 안전한 형식을 비활성화하는 방법입니다.

## 왜 이것이 중요한가

Inference 서버는 통합이 간단하도록 설계되어 있어, 편리하지만 잠재적으로 덜 안전한 데이터 로드 방법도 제공됩니다. 운영 환경 배포에서는 구성 옵션을 통해 이러한 동작을 비활성화할 수 있습니다.

이 페이지에서는 필요에 따라 서버를 더 강화하거나 더 유연한 동작을 활성화하도록 구성하는 방법을 설명합니다.

## 피클된 numpy 객체의 역직렬화

Inference 서버로 요청을 보내는 한 가지 방법은 직렬화된 numpy 객체를 사용하는 것입니다:

```python
import cv2
import pickle
import requests

image = cv2.imread("...")
img_str = pickle.dumps(image)

infer_payload = {
    "model_id": "{project_id}/{model_version}",
    "image": {
        "type": "numpy",
        "value": img_str,
    },
}

res = requests.post(
    "http://localhost:9001/infer/{task}",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json=infer_payload,
)
```

버전 `v0.14.0`, 이 페이로드 유형의 역직렬화는 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 다음을 설정하면 됩니다 `ALLOW_NUMPY_INPUT=True`. 다음을 참조하세요. [Inference CLI](https://docs.roboflow.com/reference/inference/inference-cli/server) 문서에서 해당 플래그로 서버를 실행하는 방법을 확인하세요. 이 옵션은 Roboflow의 호스팅 API에서는 사용할 수 없습니다.

{% hint style="warning" %}
서버가 공개 인터넷의 요청에 열려 있거나, 작업 공간의 API 키로 인증된 요청만 허용하도록 잠겨 있지 않은 경우에는 운영 환경에서 이 옵션을 활성화하지 마세요.
{% endhint %}

## 추론 이미지에 URL 보내기

URL에서 이미지를 가져오는 것은 편리하지만, 서버를 [서버 측 요청 위조(SSRF) 공격](https://en.wikipedia.org/wiki/Server-side_request_forgery):

```python
import requests

infer_payload = {
    "model_id": "{project_id}/{model_version}",
    "image": {
        "type": "url",
        "value": "https://some.com/image.jpg",
    },
}

res = requests.post(
    "http://localhost:9001/infer/{task}",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json=infer_payload,
)
```

Inference는 요청에 제공된 URL에서 이미지를 직접 로드할 수 있습니다 (`{"image": {"type": "url", "value": "https://..."}}`). 서버가 호출자가 제어하는 URL을 가져올 때마다, 호출자는 이를 자신의 대리로 요청을 보내도록 유도하려고 시도할 수 있으며, 이는 서버 측 요청 위조(SSRF)라고 불리는 공격 유형입니다. 내부 네트워크에 직접 접근할 수 없는 사람도 서버에게 예를 들어 다음을 가져오도록 요청할 수 있습니다:

* `http://169.254.169.254/latest/meta-data/`은 인스턴스 자격 증명을 반환할 수 있는 클라우드 메타데이터 서비스(AWS, GCP, Azure)입니다.
* `http://127.0.0.1:9001/...` 및 관리자 패널, 데이터베이스, 또는 인증되지 않은 Inference 서버 자체의 기타 로컬호스트 서비스.
* `http://10.0.0.5/`, `http://192.168.1.1/`그리고 경계 뒤에 있는 기타 사설(RFC1918), 링크 로컬, CGNAT 또는 IPv6 ULA 호스트.

공개처럼 보이는 호스트명이 공개 대상이라는 증거는 아닙니다. 사설 IP로 해석되거나, 그쪽으로 리디렉션되거나, DNS 리바인딩을 사용할 수 있습니다(검증 단계에서는 공인 IP로, 실제 연결에서는 사설 IP로 해석). Inference는 이 모든 상황을 위한 제어 기능을 제공합니다.

### 필요하지 않으면 URL 입력을 끄세요

가장 강력한 제어는 URL 이미지를 아예 허용하지 않는 것입니다. 클라이언트가 항상 이미지를 base64나 파일 업로드로 보낸다면, URL 가져오기를 완전히 비활성화하세요:

```bash
docker run --rm -p 127.0.0.1:9001:9001 \
  -e ALLOW_URL_INPUT=false \
  roboflow/roboflow-inference-server-cpu:latest
```

### URL 입력이 필요할 때는 이를 더 엄격하게 보호하세요

URL 이미지가 필요할 때 이러한 플래그는 서버가 가져올 수 있는 항목을 제한합니다. 함께 사용하면 내부 대상은 거부하고, 연결을 검증된 IP에 고정하여(DNS 리바인딩 방지), 각 리디렉션 홉을 다시 검사합니다.

<table data-search="false"><thead><tr><th>변수</th><th>기본값</th><th>효과</th></tr></thead><tbody><tr><td>ALLOW_URL_INPUT</td><td>True</td><td>URL 이미지 입력의 총괄 스위치입니다. False이면 모든 URL 이미지를 거부합니다.</td></tr><tr><td>ALLOW_LOADING_IMAGES_FROM_LOCAL_FILESYSTEM</td><td>True</td><td>로컬 파일 시스템에서 이미지 로드를 비활성화하려면 False로 설정합니다.</td></tr><tr><td>ALLOW_URL_TO_NON_GLOBAL_ADDRESSES</td><td>True</td><td>False이면 호스트가 비전역 주소(루프백, 사설, 링크 로컬/메타데이터, CGNAT, IPv6 ULA 등)로 해석되는 URL은 거부되고, 연결은 검증된 IP에 고정되어 두 번째 DNS 응답이 대상을 바꿀 수 없습니다.</td></tr><tr><td>VALIDATE_IMAGE_URL_REDIRECTS</td><td>False</td><td>True이면 리디렉션을 한 단계씩 따라가며 각 홉의 URL을 다시 검증하고, 무작정 따라가지 않습니다.</td></tr><tr><td>MAX_IMAGE_URL_REDIRECTS</td><td>30</td><td>플래그와 무관하게 적용되는 리디렉션 홉의 절대 상한입니다.</td></tr><tr><td>ALLOW_NON_HTTPS_URL_INPUT</td><td>False</td><td>False이면 https:// URL만 허용됩니다.</td></tr><tr><td>ALLOW_URL_INPUT_WITHOUT_FQDN</td><td>False</td><td>False이면 호스트가 단순 IP이거나 공용 접미사가 없는 URL은 거부되므로, 호출자는 실제 도메인 이름을 사용해야 합니다.</td></tr><tr><td>WHITELISTED_DESTINATIONS_FOR_URL_INPUT</td><td>설정되지 않음</td><td>허용 대상의 쉼표로 구분된 목록(서브도메인.도메인.접미사)입니다. 설정하면 이 대상만 허용됩니다.</td></tr><tr><td>BLACKLISTED_DESTINATIONS_FOR_URL_INPUT</td><td>설정되지 않음</td><td>항상 거부되는 대상의 쉼표로 구분된 차단 목록입니다.</td></tr></tbody></table>

공개 HTTPS 이미지 URL은 계속 허용하면서도 강화한 구성:

```bash
docker run --rm -p 127.0.0.1:9001:9001 \
  -e ALLOW_URL_TO_NON_GLOBAL_ADDRESSES=false \
  -e VALIDATE_IMAGE_URL_REDIRECTS=true \
  roboflow/roboflow-inference-server-cpu:latest
```

가장 엄격하게 제어하려면 허용 목록을 추가하여 서버가 이미지 제공 원본 호스트에만 접근하도록 하세요:

```bash
docker run --rm -p 127.0.0.1:9001:9001 \
  -e ALLOW_URL_TO_NON_GLOBAL_ADDRESSES=false \
  -e VALIDATE_IMAGE_URL_REDIRECTS=true \
  -e WHITELISTED_DESTINATIONS_FOR_URL_INPUT=images.example.com,cdn.example.com \
  roboflow/roboflow-inference-server-cpu:latest
```

{% hint style="warning" %}
두 개의 기본값이 2026년 4분기에 변경됩니다. `ALLOW_URL_TO_NON_GLOBAL_ADDRESSES` (에서 `False`) 및 `VALIDATE_IMAGE_URL_REDIRECTS` (에서 `True`) 현재는 하위 호환성을 위해 기존의 허용적인 동작을 기본값으로 사용합니다. 두 기본값 모두 2026년 4분기에 보안 값으로 전환될 예정입니다. 지금 명시적으로 보안 값으로 설정하여 미리 적용하거나, Workflow가 내부 URL 가져오기에 실제로 의존하는 경우에는 기존 값을 사용하여 변경으로 인한 예상치 못한 영향을 방지하세요.
{% endhint %}

{% hint style="info" %}
프록시는 이 보호를 우회합니다. 서버에 HTTP(S) 프록시가 구성되어 있으면, 대상은 Inference가 아니라 프록시가 해석하므로 비전역 차단과 연결 고정이 적용되지 않습니다. 서버는 이를 감지하면 경고를 출력합니다. 이러한 제어에 의존한다면 프록시 자체가 접근할 수 있는 범위를 제한하세요.
{% endhint %}

{% hint style="info" %}
Python SDK에서도 동일한 제어가 적용됩니다.  `inference-sdk` 클라이언트는 URL에서 이미지를 로드할 때 동일한 URL 정책과 SSRF 보호를 적용하고 동일한 환경 변수를 읽으므로, 전송 전에 URL 이미지를 로드하는 클라이언트도 보호됩니다.
{% endhint %}

서버 측 비디오 소스는 다음을 참조하세요. [비디오 구성](/deployment/ko/self-hosted/inference-server/configuration/video-configuration.md#server-side-video-references). 다음으로 돌아가기 [서버 보안](/deployment/ko/self-hosted/inference-server/configuration/security.md) 네트워크 액세스 및 인증에 대해서는
