> For the complete documentation index, see [llms.txt](https://clients.medianova.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://clients.medianova.com/products/security/hotlink-protection.md).

# Hotlink Protection

Prevent unauthorized use of your media files by blocking external websites from embedding or linking directly to your CDN-hosted assets.

Control direct access to CDN-delivered content by validating the `Referer` header of incoming requests.

**Hotlink Protection** helps prevent external websites from linking directly to your content. Depending on the configured mode, requests are allowed or denied based on the domain associated with the `Referer` header.

Hotlink Protection is configured per CDN Resource in the [Medianova Control Panel](https://cloud.medianova.com).

## Configure Hotlink Protection

{% stepper %}
{% step %}

### Open Security

Open your CDN Resource and select **Security**.
{% endstep %}

{% step %}

### Enable Hotlink Protection

Turn on **Hotlink Protection**.

<figure><img src="https://542970813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtK7oIwmhUHdEJcaH4Hx8%2Fuploads%2FT2ZFP2vtNCe3759wb0JJ%2Fimage.png?alt=media&amp;token=63c6929d-5924-4a50-b096-e749135e27f3" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select the Mode

Under **Mode**, select how the configured domains are evaluated:

* **Whitelist** — Allow requests associated with the configured domains.
* **Blacklist** — Deny requests associated with the configured domains.
  {% endstep %}

{% step %}

### Configure Referer Handling

Enable **Also allow requests with no Referer header** if requests without a `Referer` header should be allowed.

If this option is disabled, requests without a `Referer` header are subject to the Hotlink Protection policy.
{% endstep %}

{% step %}

### Add Domains

Under **Domain**, enter the domain to which the selected mode applies, then select **Add**.

The field accepts entries in the following formats:

* Domain, such as `domain.com`
* Wildcard domain, such as `*.domain.com`
* IP address, such as `192.168.1.1`

Add additional entries as required.
{% endstep %}

{% step %}

### Save the Configuration

Select **Save** in the pending changes bar.

Review the pending changes and confirm the configuration.
{% endstep %}
{% endstepper %}

## How Hotlink Protection Works

Hotlink Protection evaluates the `Referer` header associated with incoming requests against the configured domain list.

The resulting behavior depends on the selected **Mode**:

<table><thead><tr><th width="268.800048828125">Mode</th><th>Behavior</th></tr></thead><tbody><tr><td><strong>Whitelist</strong></td><td>Requests associated with configured domains are allowed.</td></tr><tr><td><strong>Blacklist</strong></td><td>Requests associated with configured domains are denied.</td></tr></tbody></table>

Requests without a `Referer` header can be explicitly allowed using **Also allow requests with no Referer header**.

## Important Notes

* Hotlink Protection relies on the `Referer` header supplied with the request.
* Use **Whitelist** when content should be accessible only from specified domains.
* Use **Blacklist** when specific domains should be prevented from directly accessing the content.
* Configure the handling of requests without a `Referer` header according to your access requirements.
* Multiple domain entries can be added when the policy must apply to more than one domain.

## Related Concepts

* [Security](/products/security.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://clients.medianova.com/products/security/hotlink-protection.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
