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

# स्वीकृत इनपुट फॉर्मैट

self-hosted Roboflow Inference server द्वारा स्वीकृत input formats, और pickled numpy payloads तथा URL image fetching जैसे कम सुरक्षित विकल्पों को कैसे अक्षम करें।

## यह क्यों महत्वपूर्ण है

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`, इस payload प्रकार का डीसिरियलाइज़ेशन डिफ़ॉल्ट रूप से अक्षम है। आप इसे सेट करके सक्षम कर सकते हैं `ALLOW_NUMPY_INPUT=True`. देखें [Inference CLI](https://docs.roboflow.com/reference/inference/inference-cli/server) डॉक्स में देखें कि उस फ़्लैग के साथ सर्वर कैसे चलाया जाए। यह विकल्प Roboflow के होस्ट किए गए APIs में उपलब्ध नहीं है।

{% hint style="warning" %}
यदि सर्वर खुले इंटरनेट से आने वाले अनुरोधों के लिए खुला है, या केवल आपके workspace के API key से प्रमाणित अनुरोध स्वीकार करने के लिए लॉक डाउन नहीं है, तो प्रोडक्शन में इस विकल्प को सक्षम न करें।
{% endhint %}

## इमेज inference के लिए URLs भेजना

URLs से इमेज फ़ेच करना सुविधाजनक है, लेकिन इससे सर्वर को [server-side request forgery (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 को फ़ेच करता है जिसे कॉलर नियंत्रित करता है, तो कॉलर उसे अपनी ओर से अनुरोध करने के लिए मोड़ने की कोशिश कर सकता है; इस तरह के हमले को server-side request forgery (SSRF) कहा जाता है। जो व्यक्ति आपके internal network तक सीधे नहीं पहुँच सकता, वह आपके सर्वर से, उदाहरण के लिए, यह फ़ेच करने को कह सकता है:

* `http://169.254.169.254/latest/meta-data/`, cloud metadata service (AWS, GCP, Azure), जो instance credentials वापस दे सकता है।
* `http://127.0.0.1:9001/...` और अन्य localhost सेवाएँ: admin panels, databases, या Inference सर्वर के अपने unauthenticated endpoints.
* `http://10.0.0.5/`, `http://192.168.1.1/`, और अन्य private (RFC1918), link-local, CGNAT, या IPv6 ULA hosts जो आपके perimeter के पीछे स्थित हैं।

सार्वजनिक दिखने वाला hostname सार्वजनिक target का प्रमाण नहीं है: यह private IP पर resolve हो सकता है, किसी private IP पर redirect हो सकता है, या DNS rebinding का उपयोग कर सकता है (validation check के लिए public IP पर resolve होकर, फिर वास्तविक connection के लिए private IP पर)। Inference इनमें से सभी के लिए नियंत्रण प्रदान करता है।

### यदि आपको इसकी आवश्यकता नहीं है, तो URL input बंद करें

सबसे मजबूत नियंत्रण यह है कि URL images को बिल्कुल स्वीकार ही न करें। यदि आपके clients हमेशा images को base64 या file uploads के रूप में भेजते हैं, तो URL fetching को पूरी तरह अक्षम कर दें:

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

### जब आपको इसकी आवश्यकता हो, तब URL input को अधिक सुरक्षित बनाएं

जब URL images की आवश्यकता होती है, तब ये flags सीमित करते हैं कि सर्वर क्या फ़ेच कर सकता है। साथ मिलकर ये internal targets को अस्वीकार करते हैं, connection को validated IP पर pin करते हैं (DNS rebinding को विफल करते हुए), और हर redirect hop को फिर से सत्यापित करते हैं।

<table data-search="false"><thead><tr><th>Description</th><th>Execution providers की प्राथमिकता क्रम में सूची। यदि कोई provider आपके platform पर समर्थित नहीं है, तो warning प्रदर्शित होती है।</th><th>प्रभाव</th></tr></thead><tbody><tr><td>ALLOW_URL_TO_NON_GLOBAL_ADDRESSES</td><td>WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE</td><td>URL image input के लिए master switch। False सभी URL images को अस्वीकार करता है।</td></tr><tr><td>ALLOW_LOADING_IMAGES_FROM_LOCAL_FILESYSTEM</td><td>WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE</td><td>Local filesystem से image loading को अक्षम करने के लिए इसे False पर सेट करें।</td></tr><tr><td>VALIDATE_IMAGE_URL_REDIRECTS</td><td>WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE</td><td>जब False हो, तो ऐसा URL जिसका host non-global address (loopback, private, link-local/metadata, CGNAT, IPv6 ULA, आदि) पर resolve होता है, अस्वीकार कर दिया जाता है, और connection को validated IP पर pin किया जाता है ताकि दूसरा DNS answer target को बदल न सके।</td></tr><tr><td>, और अन्य) का दस्तावेज़ यहाँ है</td><td>MODEL_VALIDATION_DISABLED</td><td>जब True हो, तो redirects को एक-एक hop करके फ़ॉलो किया जाता है और हर hop URL को फिर से सत्यापित किया जाता है, बजाय इसके कि उन्हें बिना जाँच के फ़ॉलो किया जाए।</td></tr><tr><td>MAX_IMAGE_URL_REDIRECTS</td><td>30</td><td>Redirect hops पर कड़ी अधिकतम सीमा, ऊपर दिए गए flag की परवाह किए बिना लागू।</td></tr><tr><td>ALLOW_NON_HTTPS_URL_INPUT</td><td>MODEL_VALIDATION_DISABLED</td><td>जब False हो, तो केवल https:// URLs स्वीकार किए जाते हैं।</td></tr><tr><td>ALLOW_URL_INPUT_WITHOUT_FQDN</td><td>MODEL_VALIDATION_DISABLED</td><td>जब False हो, तो ऐसे URLs अस्वीकार किए जाते हैं जिनका host केवल bare IP हो या जिनका कोई public suffix न हो, इसलिए callers को वास्तविक domain name का उपयोग करना होगा।</td></tr><tr><td>WHITELISTED_DESTINATIONS_FOR_URL_INPUT</td><td>अनसेट</td><td>कॉमा से अलग की गई destinations की allow-list (subdomain.domain.suffix)। जब यह सेट हो, केवल इन्हीं की अनुमति होती है।</td></tr><tr><td>BLACKLISTED_DESTINATIONS_FOR_URL_INPUT</td><td>अनसेट</td><td>कॉमा से अलग की गई destinations की block-list, जिन्हें हमेशा अस्वीकार किया जाता है।</td></tr></tbody></table>

एक अधिक सुरक्षित कॉन्फ़िगरेशन जो फिर भी सार्वजनिक HTTPS image URLs की अनुमति देता है:

```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 जोड़ें ताकि सर्वर केवल उन्हीं सटीक hosts तक पहुँच सके जिनसे आप images सर्व करते हैं:

```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" %}
Q4 2026 में दो डिफ़ॉल्ट बदल रहे हैं। `VALIDATE_IMAGE_URL_REDIRECTS` (को `MODEL_VALIDATION_DISABLED`) और `, और अन्य) का दस्तावेज़ यहाँ है` (को `WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE`) वर्तमान में backward compatibility के लिए पुराने, permissive व्यवहार पर डिफ़ॉल्ट हैं। दोनों डिफ़ॉल्ट Q4 2026 में secure मानों पर बदलने के लिए निर्धारित हैं। अभी इन्हें स्पष्ट रूप से secure मानों पर सेट करें ताकि आप जल्दी opt in कर सकें, या यदि कोई Workflow वास्तव में internal URLs फ़ेच करने पर निर्भर है तो पुराने मानों पर सेट करें, ताकि यह बदलाव आपको चौंकाए नहीं।
{% endhint %}

{% hint style="info" %}
Proxies इस सुरक्षा को बाइपास कर देते हैं। यदि सर्वर के लिए HTTP(S) proxy कॉन्फ़िगर किया गया है, तो destination को proxy (Inference नहीं) resolve करता है, इसलिए non-global blocking और connection pinning लागू नहीं किए जा सकते। जब सर्वर इसे पहचानता है, तो वह चेतावनी देता है। यदि आप इन controls पर निर्भर हैं, तो proxy स्वयं क्या पहुँच सकता है, इसे सीमित करें।
{% endhint %}

{% hint style="info" %}
Python SDK में वही नियंत्रण।  `inference-sdk` client URLs से images लोड करते समय वही URL policy और SSRF protections लागू करता है, और वही environment variables पढ़ता है, इसलिए जो client भेजने से पहले URL images को hydrate करता है, वह भी शामिल है।
{% endhint %}

सर्वर-साइड video sources के लिए, देखें [STREAM\_MANAGER\_MAX\_RAM\_MB](/deployment/hi/self-hosted/inference-server/configuration/video-configuration.md#server-side-video-references). वापस जाएँ [सर्वर सुरक्षा](/deployment/hi/self-hosted/inference-server/configuration/security.md) नेटवर्क एक्सेस और प्रमाणीकरण के लिए
