> 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/ja/self-hosted/inference-server/configuration/input-formats.md).

# 受け付ける入力形式

self-hosted の Roboflow Inference サーバーが受け付ける入力形式と、pickle 化された NumPy ペイロードや URL 画像取得のような安全性の低い形式を無効にする方法。

## なぜこれが重要か

Inference サーバーは統合しやすいように設計されているため、便利だがセキュリティがやや低い可能性のあるデータ読み込み方法がいくつか利用できます。本番環境へのデプロイでは、設定オプションでそれらの挙動を無効にできます。

このページでは、ニーズに応じてサーバーを強化するか、より柔軟な動作を有効にする方法を説明します。

## ピクル化された numpy オブジェクトのデシリアライズ

Inference サーバーにリクエストを送る方法の 1 つは、シリアライズされた numpy オブジェクトを使うことです:

```python
import cv2
import pickle
import requests

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

infer_payload = {
    "model_id": "{project_id}/{project_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}/{project_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/...` および他の localhost サービス: 管理パネル、データベース、または Inference サーバー自身の認証不要エンドポイント。
* `http://10.0.0.5/`, `http://192.168.1.1/`、および境界の内側にあるその他のプライベート（RFC1918）、リンクローカル、CGNAT、IPv6 ULA ホスト。

一見公開されているように見えるホスト名が公開先の証拠にはなりません。プライベート IP に解決されたり、そこへリダイレクトされたり、DNS リバインディングを使ったりする可能性があります（検証チェックでは public IP に解決し、実際の接続では private 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 に固定されるため、2 回目の DNS 応答でターゲットを差し替えることはできません。</td></tr><tr><td>VALIDATE_IMAGE_URL_REDIRECTS</td><td>False</td><td>True の場合、リダイレクトは 1 ホップずつ追跡され、各ホップの 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 やパブリックサフィックスを持たない URL は拒否されるため、呼び出し元は実際のドメイン名を使用する必要があります。</td></tr><tr><td>WHITELISTED_DESTINATIONS_FOR_URL_INPUT</td><td>未設定</td><td>カンマ区切りの宛先許可リスト（subdomain.domain.suffix）。設定すると、これらだけが許可されます。</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
```

最も厳格に制御するには、サーバーが画像を取得できるホストを正確に絞り込む allow-list を追加します:

```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" %}
2 つのデフォルト設定が 2026 年第 4 四半期に変更されます。 `ALLOW_URL_TO_NON_GLOBAL_ADDRESSES` （ `False`）および `VALIDATE_IMAGE_URL_REDIRECTS` （ `True`）は現在、後方互換性のために従来の許容的な動作がデフォルトです。両方のデフォルトは 2026 年第 4 四半期に安全な値へ切り替わる予定です。早めに利用するには安全な値に今すぐ明示的に設定し、ワークフローが実際に内部 URL の取得に依存している場合は、変更が予想外にならないよう従来の値に設定してください。
{% endhint %}

{% hint style="info" %}
プロキシはこの保護を回避します。サーバーに HTTP(S) プロキシが設定されている場合、宛先の解決は Inference ではなくプロキシが行うため、非グローバルのブロックや接続の固定は適用できません。サーバーはこれを検知すると警告を出します。これらの制御に依存する場合は、プロキシ自体が到達できる範囲を制限してください。
{% endhint %}

{% hint style="info" %}
Python SDK でも同じ制御があります。 `inference-sdk` クライアントは、URL から画像を読み込む際に同じ URL ポリシーと SSRF 保護を適用し、同じ環境変数を読み取るため、送信前に URL 画像を展開するクライアントも保護されます。
{% endhint %}

サーバー側の動画ソースについては、こちらを参照してください: [ビデオ設定](/deployment/ja/self-hosted/inference-server/configuration/video-configuration.md#server-side-video-references)。戻る [サーバーのセキュリティ](/deployment/ja/self-hosted/inference-server/configuration/security.md) ネットワークアクセスと認証について
