> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrität der Kameleoon-Anwendungsdatei

> Überprüfen Sie die Integrität der Kameleoon-Anwendungsdatei, indem Sie mithilfe der Automation API Hash-Codes generieren und vergleichen.

## Einführung

Mit der Automation API können Sie die Integrität der auf Ihrer Website geladenen Kameleoon-Anwendungsdatei überprüfen. Durch diese Prüfung können Sie sicherstellen, dass die Anwendungsdatei nicht geändert wurde und sicher auf Ihrer Website verwendet werden kann.

Der Integritätsprüfungsprozess umfasst die Generierung eines Hash-Codes basierend auf dem Inhalt der Anwendungsdatei und den anschließenden Vergleich mit dem Hash-Code der in Ihre Website integrierten Datei. In jedem Fall sollten beide Hash-Codes übereinstimmen.

Dieses Dokument führt Sie durch die Implementierung dieser Integritätsprüfung und stellt sicher, dass die Anwendungsdatei vor Manipulationen sicher bleibt.

<Note>
  Bitte beachten Sie, dass unsere API nur einen **hashCode** generiert. Es liegt an Ihnen zu entscheiden, wie Sie den generierten Hash zur Sicherung der Kameleoon-Anwendungsdatei verwenden.
</Note>

## Beispielimplementierung der Integritätsprüfung

Um den Hash-Code der ursprünglichen Kameleoon-Anwendungsdatei zu erhalten, müssen Sie unsere [Automation API](./get-started) aufrufen. Zunächst müssen Sie über OAuth 2.0 Zugriff auf die Automation API erhalten und auf die entsprechende [Dokumentation](./get-started#client-credentials-flow) verweisen.

Wie im folgenden Beispiel gezeigt, können Sie nach einer Anfrage an den [API-Endpoint zum Abrufen des Hash-Codes](/api-reference/site/retrieve-file-hash-code) diesen mit dem Hash-Code vergleichen, den Sie auf Ihrer Seite berechnen, um sicherzustellen, dass die Datei in keiner Weise manipuliert wurde.

```javascript theme={null}
const axios = require("axios");
const crypto = require("crypto");

const API_SSX_URL = "https://api.kameleoon.com";
const SITE_CODE = "SITE_CODE";
const HASH_TYPE = "SHA256";
const CLIENT_ID = "CLIENT_ID";
const CLIENT_SECRET = "CLIENT_SECRET";

async function obtainAuthToken() {
	const response = await axios({
		url: `${API_SSX_URL}/oauth/token`,
		method: "POST",
		headers: {
			"Content-type": "application/x-www-form-urlencoded"
		},
		data: `grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}`
	});
	return response.data.access_token;
}

async function obtainHash() {
	const token = await obtainAuthToken();
	const hashCodeResponse = await axios({
		url: `${API_SSX_URL}/sites/${SITE_CODE}/hash`,
		method: "PATCH",
		headers: {
			Authorization: "Bearer " + token,
			"Content-type": "application/json"
		},
		data: `{"hashType": "${HASH_TYPE}"}`
	});

	return hashCodeResponse.data.hashCode; //  { hashCode: 'hashCode', hashType: "SHA256" }
}

<Important>
`kameleoon.js` ist veraltet und wurde in allen Kameleoon-Implementierungs-Snippets durch `engine.js` ersetzt. `kameleoon.js` wird nach dem **1. Juni 2026** nicht mehr unterstützt. Nach diesem Datum funktionieren alle Kampagnen auf Websites, die noch auf `kameleoon.js` verweisen, nicht mehr. Wir empfehlen dringend, Ihr Implementierungs-Snippet entsprechend zu aktualisieren.
</Important>


// function to compare the hash code




	async function checkHash() {
	const scriptResponse = await axios({
		url: `https://${SITE_CODE}.kameleoon.io/engine.js?t=${new Date().getTime()}`,
		method: "GET"
	});
	const hashCodeFromAPI = await obtainHash();
	const hashCode = crypto.createHash(HASH_TYPE).update(scriptResponse.data).digest("hex");
	return hashCodeFromAPI === hashCode;
}

checkHash();
```

```php theme={null}
<?php

$API_SSX_URL = 'https://api.kameleoon.com';
$SITE_CODE = 'SITE_CODE';
$HASH_TYPE = 'SHA256';
$CLIENT_ID = 'CLIENT_ID';
$CLIENT_SECRET = 'CLIENT_SECRET';

$tokenRequest = curl_init($API_SSX_URL . "/oauth/token");
curl_setopt($tokenRequest, CURLOPT_POST, 1);
curl_setopt($tokenRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($tokenRequest, CURLOPT_POSTFIELDS, "grant_type=client_credentials&client_id=" . $CLIENT_ID . "&client_secret=" . $CLIENT_SECRET);
$tokenOutput = curl_exec($tokenRequest);
curl_close($tokenRequest);
$token = json_decode($tokenOutput)->access_token;

$hashRequest = curl_init($API_SSX_URL . "/sites/" . $SITE_CODE . "/hash");
curl_setopt($hashRequest, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($hashRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hashRequest, CURLOPT_POSTFIELDS, json_encode(array(
  'hashType' => $HASH_TYPE
)));
curl_setopt($hashRequest, CURLOPT_HTTPHEADER, array(
  'Content-Type: application/json',
  'Authorization: Bearer ' . $token
));
$hashOutput = curl_exec($hashRequest);
curl_close($hashRequest);
$hash = json_decode($hashRequest)->hashCode;

// Some method to compare the hash code
checkHash($hash);
```

<Note>
  Wir überprüfen die auf unserem CDN gehosteten Kameleoon-Anwendungsdateien nicht kontinuierlich für jeden Kunden. Stattdessen überlassen wir es unseren Kunden zu entscheiden, wie die Überprüfung der Anwendungsdateien durchgeführt werden soll und welche Maßnahmen im Falle nicht übereinstimmender Hash-Codes zu ergreifen sind, basierend auf ihren spezifischen Anforderungen. Im Allgemeinen wäre eine sichere Praxis, den Anwendungsdatei-Link umgehend von Ihrer Website zu entfernen, wenn eine Diskrepanz festgestellt wird.
</Note>

<Note>
  Die Domain für Ihre Kameleoon-Skripte kann zwischen Projekten variieren. Je nachdem, wann Ihre Projekte erstellt wurden, können sie entweder auf `kameleoon.eu` oder `kameleoon.io` gehostet werden. Stellen Sie sicher, dass Sie die Domain verwenden, die in Ihrem Projekt in der Kameleoon App angezeigt wird.
</Note>
