> For the complete documentation index, see [llms.txt](https://sdn.docs.3q.video/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sdn.docs.3q.video/interface/player/content-absicherung.md).

# Content-Absicherung

Unsere Plattform bietet Methoden zur Absicherung von Live- und Video On-Demand Content vor unberechtigten Zugriffen.

{% hint style="info" %}
Bei der Absicherung ist zwischen der Player Protection und Content Protection zu unterscheiden. Die Schlüsselerzeugung für die Content Protection muss nur in Szenarien verwendet werden, wenn unser Videoplayer **nicht** zum Einsatz kommt. Wenn die Content Protection aktiv ist, kümmert sich unser Player selbständig um die Erzeugung der notwendigen Schlüssel.
{% endhint %}

### Projektschlüssel (Private Key) <a href="#page_projektschlussel_-private_key" id="page_projektschlussel_-private_key"></a>

Jedes Projekt in Ihrem Kundenkonto hat einen eigenen **Project Key**. Diesen benötigen Sie zur Nutzung der einzelnen Schutzmechanismen.

Um den Schlüssel zu erhalten, gehen Sie in Ihre Projektübersicht und öffnen den Bereich **Einstellungen**. Hier können Sie den Projektschlüssel kopieren oder auch einen neuen Schlüssel erzeugen.

### Player Protection  <a href="#page_player_protection" id="page_player_protection"></a>

Bei dieser Methode wird der 3Q Player mit einem **Key** vor unberechtigten Zugriffen geschützt.  Diese Methode kann für einzelne Videodateien oder für alle Inhalte eines Projektes genutzt werden.

Zur Ausführung erzeugt der Kunde Serverseitig einen **Key** und aktiviert in der Player-Konfiguration **Schutz des Players mit Key**.

{% hint style="danger" %}
Ist die Funktion aktiv, kann der 3Q Player ohne den Key **nicht** aufgerufen werden.
{% endhint %}

#### Beispiele für serverseitige Schlüsselerzeugung und Übergabe an den Player <a href="#page_beispiel_schlusselerzeugung_und_ubergabe_an_den_player" id="page_beispiel_schlusselerzeugung_und_ubergabe_an_den_player"></a>

PHP Code:

```php
// serverside.php
$_project_id = 'project_id';
$_project_key = 'project_key';
$timestamp = time() + 60; // Gültigkeit des Schlüssels, aktuelle Zeit zzgl. 60 Sekunden
$key = md5($_project_id.$_project_key.$timestamp);
```

Python Code:

```python
from hashlib import md5
project_id = 'project id'
# You'll find the private key in the project settings.
project_key = 'project_secret'
timestamp = int(time.time()) + 60
key = md5('{}{}{}'.format(project_id, project_key, timestamp).encode('utf-8')).hexdigest()
```

{% hint style="warning" %}
Generieren Sie die Token nicht im Browser da dabei der Key nicht geschützt ist!
{% endhint %}

**JavaScript Integration (js3q)**

Eine Anleitung zur Integration des Players und Erzeugung des Keys finden Sie hier: <https://docs.3q.video/en/Player_API/Basic_usage.html>.

**Iframe Integration**

Bei der Iframe Integration kann der Key und Timestamp mittels `GET`-Parameter.

Beispiel Integration Iframe mit Schlüssel:

```
<iframe id="sdn" title="3Q SDN" width="640px" height="360px" src="https://playout.3qsdn.com/59422d06-9ed4-11ea-97a4-002590c750be?key=[key]&timestamp=[timestamp]" frameborder="0" scrolling="no" allowfullscreen></iframe>
```

### Content Distribution Protection <a href="#page_content_distribution_protection" id="page_content_distribution_protection"></a>

Mit der Methode **Content Distribution Protection** kann die Auslieferung von Content mit unserem Player, direkte Streaming URLs oder Download URLs geschützt werden.

{% hint style="info" %}
Wenn Sie diese Option aktivieren und unseren Player integrieren, wird die Schlüsselerzeugung für diese Absicherung automatisch geregelt. Nur im Fall dessen, dass Sie unseren Player nicht verwenden, z.B. bei progressive Download oder mit einem Videoplayer von einem Drittanbieter, müssen Sie die Schlüssel selbstständig erzeugen.
{% endhint %}

Dieses Feature aktivieren Sie über die **Projekt Einstellungen  > Content-Absicherung** im gewünschten Projekt. Fortan wird sämtlicher Content in unserem Videoplayer automatisch mit diesem Schutzmechanismus ausgeliefert.

Für die Nutzung der direkten Streaming- und Download-URLs **ohne unseren Player** ist es nun notwendig, für jede Nutzung einen Schlüssel zu generieren.

#### Beispiel Schlüsselerzeugung <a href="#page_beispiel_schlusselerzeugung" id="page_beispiel_schlusselerzeugung"></a>

Schlüssel mit Hilfe von PHP oder einer anderen Programmiersprache erzeugen:

```
// token.php
function generateToken() {

$expires = time() + 600; // Gültigkeit des Schlüssels, aktuelle Zeit zzgl. 10 Minuten
$_user_agent = ''; // User Agent
$project_key = ''; // Your private project key
$md5 = md5($expires.$project_key.$_user_agent, false);

return $md5.'/'.$expires;
}
```

Link generieren:

```
https://sdn-global-streaming-cache.3qsdn.com/s/{generateToken()}/3144/files/17/11/766971/3144-F98zkwncqTR7BMg2.ism/manifest.m3u8?format=hls&mime=mp4&source=html5
```

{% hint style="danger" %}
Es ist essentiell, dass für jeden Aufruf ein eigener Schlüssel generiert wird.
{% endhint %}
